Java设计模式(二)——策略模式

时间:2021-12-22 21:55:50

定义场景

              实现某一种功能有诸多算法或者策略,如果简单的将这些算法或者策略进行封装,随着工程的迭代,往往导致会导致封装好的算法类非常臃肿,难于扩展。而策略模式恰好解决了这一难题,使得算法独立于他的调用者独立运行,易于扩展,满足软件开发的高内聚低耦合的要求。

类图

Java设计模式(二)——策略模式 这个模式涉及到三个角色:
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");
}
}

总结

策略模式主要是完成一种代码的解耦,避免反复if...else...或者switch()模式,易于扩展,将各个算法或者策略隔离,封装在公共接口类中。