package 策略模式;
public class mian {
/**
* 模拟:快船VS火箭, 第一个策略, CP3 和 格里芬 里外结合。
*
* 第二哥策略, 小乔丹和太子爷一起发挥,里外结合。
*
* 第三个策略, 把自己玩死了, 回家钓鱼。
*
* 下面的这种形式, 应该是很常见的一种, 不同的业务执行,传入到高层的时候,都是以接口作为参数来进行。
*
* 在高层的时候, 都是直接接口来执行方法。 实现接口的具体子类就是代表一个不同的业务。 这就是一种策略模式。就是添加了一个接口而已。
*
* 只是我们在调用的时候, 需要知道, 这个时候,我是需要哪一种策略或者哪一种业务。 我们必须知道这一点,对我们来说,我们需要知道所有的业务
*
* 然后来进行选择。 (书本后面说,通过工厂方法模式来处理这个问题,后续在进行升级。)
*
* **/
public static void main(String[] args) {
// 第一场, 选择第一个策略
StrategyOne one = new StrategyOne();
StrategyList list = new StrategyList(one);
list.execute();
// 第二场, 选择第二个策略
StrategyTwo two = new StrategyTwo();
StrategyList context = new StrategyList(two);
context.execute();
}
}
package 策略模式;
// 策略接口
public interface IStrategy {
public void execute();
}
package 策略模式;
// 锦囊,装策略的盒子
public class StrategyList {
private IStrategy strategy;
public StrategyList(IStrategy strategy){
this.strategy = strategy;
}
public void execute(){
this.strategy.execute();
}
}
package 策略模式;
// 策略一
public class StrategyOne implements IStrategy{
@Override
public void execute() {
System.out.println("第一个策略, CP3 和 格里芬 里外结合。");
}
}
package 策略模式;
// 第二个策略
public class StrategyTwo implements IStrategy{
@Override
public void execute() {
System.out.println("第二哥策略, 小乔丹和太子爷一起发挥,里外结合。");
}
}
第一个策略, CP3 和 格里芬 里外结合。
第二哥策略, 小乔丹和太子爷一起发挥,里外结合。