知识卡片
策略模式很少单独使用需配合工厂方法隐藏选择逻辑
内容
[[策略模式的优点与全部暴露的代价]]提到的暴露问题,实践中通常引入 [[工厂方法模式的定义与命令简化原理]]补上:由工厂类根据条件决定实例化并返回哪个具体 策略,调用方只需向工厂要一个策略,不必了解策略家族全貌。发散:策略模式解决”如何封装 可互换算法”,工厂方法解决”如何决定选用哪个算法”,两者合起来才是实践中站得住脚的完整 方案。
参考来源
- 位置:《设计模式之禅(第2版)》第18章《策略模式》(源文件:_epub-src/text/part0085.html)
- 结论依据:原文明确"策略模式是一个非常简单的模式……但它单独使用的地方就比较少了,因为它有致命缺陷:所有的策略都需要暴露出去……我们的策略模式只是实现了锦囊的管理,但是我们没有严格地定义'适当的场景'拆开'适当的锦囊',在实际项目中,我们一般通过工厂方法模式来实现策略类的声明"。
- 原始内容:它在项目中使用得非常多,但它单独使用的地方就比较少了,因为它有致命缺陷:所有的策略都需要暴露出去……在实际项目中,我们一般通过工厂方法模式来实现策略类的声明,读者可以参考混编模式。