第一章:策略模式 - Head First 设计模式
策略模式
策略模式
定义了算法族,分别封装起来,让他们之间可以相互替换,此模式让算法的变化独立于使用算法的客户。
例子:鸭子的例子
不好的设计1:p4图

- 如果想只给部分类型的鸭子增加fly()将会非常麻烦。
不好的设计2:p6图

- 如果多个类型的鸭子的fly()行为一样,那么将会出现很多重复代码。
- 如果要修改所有鸭子的fly()行为,那么需要修改很多地方。
策略模式的设计:p22图

设计原则
在软件开发上,有什么是你可以深信不疑的?
改变!不管当初软件设计得多好,一段时间过后,总是需要成长与改变。
建立可维护的OO系统,要诀就在于随时想到系统以后可能需要的变化以及应付变化的原则。
设计原则1:找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起。
把会变化的部分取出并封装起来,会使得系统更有弹性。
设计原则2:针对接口编程,而不是针对实现编程。
这里的”接口”是广义的”接口”,真正的意思是”针对超类型(supertype)编程”。
设计原则3:多用组合,少用继承。
使用组合建立系统具有很大弹性,
1.不仅可将算法簇封装成类,
2.更可以”在运行时动态地改变行为”(只要组合的行为对象符合正确的接口标准即可)。
设计工具

blog comments powered by