码迷,mamicode.com
首页 > 其他好文 > 详细

策略模式

时间:2019-04-11 19:40:03      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:custom   customer   imp   []   mic   public   interface   alc   print   

  • 定义了算法簇,分别封装到接口中,让他们之间可以相互替换或结合使用
  • 使得算法的变化独立于使用算法的客户

技术图片

public interface Strategy {
     double calculatePrice(double prePrice);
}

public class Customer implements Strategy {
     @Override
     public double calculatePrice(double prePrice) {
           return prePrice * 0.9;
     }
}

/**
 * 负责和具体的策略类交互,使得算法和客户端分离,通过此类调用策略类的策略方法,策略类本身不能自动发送策略信息
 */
public abstract class Context{
     //当前采用的算法对象
     private Strategy strategy;
     //通过构造器注入(组合)
     public Context(Strategy strategy) {
           this.strategy = strategy;
     }
     public abstract void calculatePrice(double price){
           System.out.println("价格:" + strategy.calculatePrice(price));
     }
}

public class Client{
     public static void main(String[] args) {
          Strategy strategy = new Customer();
          Context context = new Context(strategy);
          context.calculatePrice(99);
    }
}

策略模式

标签:custom   customer   imp   []   mic   public   interface   alc   print   

原文地址:https://www.cnblogs.com/mabaoqing/p/10691598.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!