策略者模式就是一个功能需求可以有多种策略来进行选择,比如打折,在不同的时间段打折的力度是不同的,按照正常的逻辑我们需要一个个if-else去判断,而策略模式利用开闭原则,抽取出一个接口里面有一个抽象的方法,让不同的策略类去实现这个接口方法,来实现多种策略。在外部策略选择时直接传入选择的策略类即可。
public interface Strategy {
void show();
}
/*
为春节准备的促销活动A
*/
public class StrategyA implements Strategy {
public void show() {
System.out.println("春节活动: 买一送一");
}
}
/*
为中秋准备的促销活动B
*/
public class StrategyB implements Strategy {
public void show() {
System.out.println("中秋活动: 满200元减50元");
}
}
/*
为国庆准备的促销活动C
*/
public class StrategyC implements Strategy {
public void show() {
System.out.println("国庆活动:满1000元加一元换购任意200元以下商品");
}
}
public class Test {
public static void main(String[] args) {
Strategy strategyA = new StrategyA();
strategyA.show();
Strategy strategyB = new StrategyB();
strategyB.show();
Strategy strategyC = new StrategyC();
strategyC.show();
}
}