策略模式
策略模式
定义
定义一系列算法,把它们一个个封装起来,并且使它们可以相互替换,以通过不同策略实现一个功能
比如:你需要去一个地方,你可以通过坐飞机、坐车、或者骑自行车去,这三者都可以完成去这个地方的功能,使用的方法却不同,具体要使用使用哪种方法得根据你的时间和金钱来决定,可以动态根据时间和金钱进行判断出最优选择,这就是策略模式
优点
- 策略模式利用组合、委托和多态等技术和思想,可以有效地避免多重条件选择语句
- 策略模式提供了对 开放-封闭原则的完美支持,将算法封装在独立的 strategy 中,使得它们易于切换,易于理解,易于扩展
- 策略模式中的算法也可以复用在系统的其他地方,从而避免许多重复的复制粘贴
- 在策略模式中利用组合和委托来让 Context 拥有执行算法的能力,这也就是继承的一种更轻便的替代方案
缺点
要使用策略模式,必须了解所有的 strategy ,必须了解各个 strategy 之间的不同点,这样才能选择一个合适的 strategy ,比如,去某个地方时要选择一种合适的出行路线,必须先了解这些路线方案的具体细节,此时 strategy 要向用户暴露它的所有实现,这是违反最少知识原则的