设计模式-策略模式_策略模式

/**
* 策略模式
*
* 定义了算法族,分别封装起来,让他们之间可以相互替换
* 此模式的变化对独立于算法的使用者
*
* 优点:
* 算法可以自由切换,改变算法很方便
* 扩展性良好,增加一个策略,只需要增加一个类
*
* 缺点:
* 上层模块必须知道有哪些策略,所有的策略需要对外暴露
*
* 应用场景:
* ThreadPoolExecutor
*
*/
public class TestStrategy {
public static void main(String[] args) {
//水军策略
StrategyContext strategy=new StrategyContext(new WaterArmy());
strategy.addFans();
//原创作品策略
StrategyContext strategyContext=new StrategyContext(new OriginalArticle());
strategyContext.addFans();
}
}
/**
* 定义一个策略接口,增加粉丝的策略
*/
public interface Strategy {
void addFans();
}
public class StrategyContext {
private Strategy strategy;

public StrategyContext(Strategy strategy) {
this.strategy = strategy;
}

public void addFans(){
strategy.addFans();
}
}
public class WaterArmy implements  Strategy{
@Override
public void addFans() {
System.out.println("我花了10000万请水军");
}
}
public class OriginalArticle implements Strategy {
@Override
public void addFans() {
System.out.println("没有钱,认证的写文章");
}
}