如下内容是学习HFDP第一部分《设计模式入门》所得,主要就是一些原文的摘抄和少量自己的总结。
OO原则是我们的目标,设计模式是我们的做法。
OO原则:
- 封装变化。
- 多用组合,少用继承。
- 针对接口编程,不针对实现编程。
在这一部分,书中通过讲解对一个简单SimUDuck根据新需求的重新设计,不断优化过程中,顺理成章地将策略模式讲解清楚了,策略模式“严肃”定义:
策略模式定义了算法族,分别封装起来让它们之间可以相互替换,此模式让算法的变化独立于使用算法的用户。
这个模式的存在以前上面的设计原则第一条直接刷新了我之前对OO设计的一个认识:
抽象出不变的作为基类,将不同的特化到子类中去。
这个认识本身也没错,但是显然需要结合封装变化的设计原则使用才能适用更多场景,设计出弹性更好的系统来。
书中的示例代码都是使用java,我用C++将策略模式示例重新实现了一下,源码放在这个Solution的StrategyPattern工程里。
UML类图如下,Visio原图见[这里]: