定义
定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。
案例
公司做了一套相当成功的模拟鸭子游戏。游戏中会出现各种鸭子,一边游泳戏水,一边呱呱叫。此系统的内部设计使用了标准的OO技术,设计了一个鸭子超类,并让各种鸭子继承此超类。(P7-P8)
现在要求鸭子能飞,如果在基类中加入fly()方法,并非所有的鸭子都会飞,比如橡皮鸭子。
设计原则
1.找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起。(在此案例中变化的部分是飞的行为和呱呱叫的行为)
2.针对接口编程,而不是针对实现编程。
3.多用组合,少用继承。