设计模式22-策略模式。
策略的重点是其实现可以随意替换,可以根据不同的场景调用不同的实现。
设计模式22-策略模式(Strategy)
概述
策略的重点是其实现可以随意替换,可以根据不同的场景调用不同的实现。
优点
算法可以自由切换。
避免多重条件判断。
扩展性好。
缺点
阶级扩张。
所有策略类都需要公开。
简单实现
JDK实现
策略需要设计一个接口,为一系列提供外部调用的策略模式实现类提供统一的方法。
界面策略{
/**
*打印邮件
*
* @param消息消息
*/
无效打印(字符串消息);
}
通过不同的实现提供不同的业务逻辑。
公共类正常策略实现策略{
@覆盖
公共无效打印(字符串消息){ 0
System.out.println(消息);
}
}
公共类错误策略实现策略{
@覆盖
公共无效打印(字符串消息){ 0
System.err.println(消息);
}
}
在不同的场景中,通过调用不同的实现类来完成不同的业务逻辑。
公共类设计模式
@测试
public void strategyDesignPattern(){ 0
字符串消息=“这是一条消息”;
strategy print strategy=new normal strategy();
printStrategy.print(消息);
print strategy=new error strategy();
printStrategy.print(消息);
}
}
源码解析
和状态模式的比较
模式封装了业务逻辑,业务逻辑被解耦。模式将业务逻辑封装成状态,状态之间存在切换关系,这可以在上下文或状态本身中实现。
该模式根据不同的业务场景切换不同的业务逻辑;模式通过在同一个场景中设置不同的状态来调用不同的业务逻辑。
策略业务逻辑的增加和删除不影响其他已有的业务逻辑;模式状态的添加和删除需要在其他状态实现中修改切换状态逻辑。
策略模式可以由客户端直接调用,状态模式必须由客户端通过有状态模型调用。
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/53729.html