解析:
定义:定义一系列算法,将每个算法封装到具有公共接口的一系列策略类中,从而使他们可以相互替换 & 让算法可在不影响客户的情况下发生变化
实现:
- 定义抽象策略角色
public abstract class Strategy{ public abstract void show(); }
-
定义具体策略角色(Concrete Strategy):每个节日具体的促销活动;
//为春节准备的促销活动Aclass StrategyA extends Strategy{ @Override public void show(){ System.out.println("为春节准备的促销活动A"); } }
//为中秋节准备的促销活动Bclass StrategyB extends Strategy{ @Override public void show(){ System.out.println("为中秋节准备的促销活动B"); } }
//为圣诞准备的促销活动Cclass StrategyC extends Strategy{ @Override public void show(){ System.out.println("为圣诞节准备的促销活动C"); } }
-
定义环境角色(Context):用于连接上下文,即把促销活动推销给客户,这里可以理解为销售员
class Context_SalesMan{ //持有抽象策略角色的引用 private Strategy strategy; //生成销售员实例时,告诉销售员什么节日(构造方法) //使得销售员根据传入的参数(节日)选择促销活动(这里使用的一个简单的工厂模式) public Context_SalesMan(String festival){ switch(festival){ //春节就使用春节促销活动 case "A": strategy = new StrategyA(); break; //中秋节就使用中秋节促销活动 case "B": strategy = new StrategyB(); break; //圣诞节就使用圣诞节促销活动 case "B": strategy = new StrategyC(); break; } } //向客户展示促销活动 public void SalesManShow(){ strategy.show(); } }
-
客户端调用-让销售员进行促销活动的落地
public class StrategyPattern{ public static void main(String args[]){ Context_SalesMan mSalesMan; //春节来了,使用春节促销活动 System.out.println("对于春节:"); mSalesMan = new Context_SalesMan("A"); mSalesMan.SalesManShow(); //中秋节来了,使用中秋节促销活动 System.out.println("对于中秋节:"); mSalesMan = new Context_SalesMan("B"); mSalesMan.SalesManShow(); //圣诞节来了,使用圣诞节促销活动 System.out.println("对于圣诞节:"); mSalesMan = new Context_SalesMan("C"); mSalesMan.SalesManShow(); } }
最后修改于 2020-03-29 14:08:20
如果觉得我的文章对你有用,请随意赞赏
扫一扫支付

