行云流水's Bolg

第一章:策略模式 - Head First 设计模式

策略模式

策略模式定义了算法族,分别封装起来,让他们之间可以相互替换,此模式让算法的变化独立于使用算法的客户。

例子:鸭子的例子

不好的设计1:p4图

p4图

  1. 如果想只给部分类型的鸭子增加fly()将会非常麻烦。

不好的设计2:p6图

p6图

  1. 如果多个类型的鸭子的fly()行为一样,那么将会出现很多重复代码。
  2. 如果要修改所有鸭子的fly()行为,那么需要修改很多地方。

策略模式的设计:p22图

p22图

设计原则

在软件开发上,有什么是你可以深信不疑的?
改变!不管当初软件设计得多好,一段时间过后,总是需要成长与改变。
建立可维护的OO系统,要诀就在于随时想到系统以后可能需要的变化以及应付变化的原则。

设计原则1:找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起。

把会变化的部分取出并封装起来,会使得系统更有弹性。

设计原则2:针对接口编程,而不是针对实现编程。

这里的”接口”是广义的”接口”,真正的意思是”针对超类型(supertype)编程”。

设计原则3:多用组合,少用继承。

使用组合建立系统具有很大弹性, 1.不仅可将算法簇封装成类, 2.更可以”在运行时动态地改变行为”(只要组合的行为对象符合正确的接口标准即可)。

设计工具

p25图

blog comments powered by Disqus