定义场景
实现某一种功能有诸多算法或者策略,如果简单的将这些算法或者策略进行封装,随着工程的迭代,往往导致会导致封装好的算法类非常臃肿,难于扩展。而策略模式恰好解决了这一难题,使得算法独立于他的调用者独立运行,易于扩展,满足软件开发的高内聚低耦合的要求。类图
这个模式涉及到三个角色:1)环境(Context)角色:持有一个Strategy的引用。
2)抽象策略(Strategy)角色:这是一个抽象角色,通常由一个接口或抽象类实现。此角色给出所有的具体策略类所需的接口。
3)具体策略(StrategyX)角色:包装了相关的算法或行为。
具体代码实现
持有策略对象的引用类
public class Context {
private Strategy strategy;
public Context(Strategy strategy) {
this.strategy = strategy;
}
public void execute() {
strategy.doWork();
}
}
策略接口
public interface Strategy {
void doWork();
}
具体实现类
public class NewConsumer implements Strategy {
@Override
public void doWork() {
System.out.print("is new");
}
}