知识卡片
四种实现方案的权衡:从硬编码到策略模式
内容
用”根据符号做加减运算”对比四种实现:if/else硬编码简单但改动要碰原类;三目运算符只是 写法紧凑;[[策略模式的定义与三个角色]]让新增运算符只需新增策略类;策略枚举用enum在每个 成员实现方法,兼具扩展性和简洁调用,但枚举项是public/final/static的,扩展性受限,更 适合不常变化的家族。发散:选哪种取决于变化频率——固定不变用枚举省事,持续新增变体用 完整策略模式。
参考来源
- 位置:《设计模式之禅(第2版)》第18章《策略模式》(源文件:_epub-src/text/part0084.html)
- 结论依据:原文依次展示if/else硬编码、三目运算符简化、策略模式接口实现、策略枚举四种方案的完整代码,并在策略枚举部分说明"它受枚举类型的限制,每个枚举项都是public、final、static的,扩展性受到了一定的约束,因此在系统开发中,策略枚举一般担当不经常发生变化的角色"。
- 原始内容:先说第一种,写一个类,然后进行加减法运算……我们再来思考第三个方案,本章介绍策略模式,那把策略模式应用到该需求是不是很合适啊?……策略枚举是一个非常优秀和方便的模式,但是它受枚举类型的限制……策略枚举一般担当不经常发生变化的角色。