定义场景
实现某一种功能有诸多算法或者策略,如果简单的将这些算法或者策略进行封装,随着工程的迭代,往往导致会导致封装好的算法类非常臃肿,难于扩展。而策略模式恰好解决了这一难题,使得算法独立于他的调用者独立运行,易于扩展,满足软件开发的高内聚低耦合的要求。
类图
这个模式涉及到三个角色:
1)环境(Context)角色:持有一个Strategy的引用。
2)抽象策略(Strategy)角色:这是一个抽象角色,通常由一个接口或抽象类实现。此角色给出所有的具体策略类所需的接口。
3)具体策略(StrategyX)角色:包装了相关的算法或行为。
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()模式,易于扩展,将各个算法或者策略隔离,封装在公共接口类中。
本文介绍了解决算法或策略封装导致的代码臃肿问题的方法——策略模式。通过将算法或策略独立于其调用者,提高了代码的扩展性和可维护性。文章详细解释了环境角色、抽象策略角色和具体策略角色的概念,并提供了具体实现案例。
1189

被折叠的 条评论
为什么被折叠?



