大话设计模式读书笔记(二)
来源:互联网 发布:java调用python脚本 编辑:程序博客网 时间:2024/06/11 19:53
策略模式
Why
接上一篇的简单工厂模式,我们考虑另外一个问题,上一次的简单工厂模式我们在客户端需要一个class来根据要求调用不同的Operation子类。然而,每当计算有新的需求加入的时候,这个工厂都需要重新编译部署。并且,客户端需要Operation这个子类以便调用相应的类。
What
策略模式定义了一系列的算法,并对其进行封装。用这样的方式,我们希望它们之间的替换不影响客户的算法。
How
相比于工厂策略,我们可以把工厂类改造成一个客户端的class,在构造函数中输入相应的逻辑值来判断具体调用哪个方法。用这种方法,客户连Operation类都不需要知道。客户端和运算逻辑彻底分离了。
public class OperationContext { private Operation op; public OperationContext(char operator) { Operation op = null; switch(operator) { case '+': op = new Add(); break; case '-': op = new Subtract(); break; } return op; }}
Where
商店的收银系统里面需要包含打折的方法,比如300元减100元,50%折扣等。
Result
利用Context class的构造函数来实现客户端和逻辑的彻底分离,更加方便单元测试并且提供了逻辑代码的重用。
0 0
- 《大话设计模式》 读书笔记(二)
- 大话设计模式读书笔记(二)
- 大话设计模式读书笔记二
- 大话设计模式读书笔记(二)策略模式
- 《大话设计模式》读书笔记
- 【读书笔记】大话设计模式
- 《大话设计模式》读书笔记
- 读书笔记--大话设计模式
- 大话设计模式 读书笔记
- 《大话设计模式》读书笔记
- 大话设计模式读书笔记
- 大话设计模式(二)
- 大话设计模式(二)
- 《大话设计模式》读书笔记(一)
- 《大话设计模式》读书笔记(一)
- 大话设计模式读书笔记(六)
- 《大话设计模式》 读书笔记(一)
- 大话设计模式读书笔记(一)
- 阅面科技赵京雷:人工智能时代,智能机器需要怎样的眼睛?
- 关于flash AS3.0加手型的问题
- mybatis注解动态sql
- 338. Counting Bits
- Android 6.0 adb remount后没有写权限,提示Read-only file system
- 大话设计模式读书笔记(二)
- 由动态分配和静态分配的数据在内存组成区别
- 使用 ssm 框架,基本流程
- Toj 3984. I guess the gift is an ipad!
- 一个FPGA工程师的个人工作经历总结
- SPFA最短路径模板
- 非阻塞Connect对于select时应注意问题
- Java面试宝典基础篇(绝对值得收藏超长版)
- (function($){...})(jQuery)是什么意思