设计模式 - D1 - 策略模式
策略模式
- 策略模式定义了算法族并分别封装起来,让他们可以互相替换,此模式让算法的变化独立于使用算法的客户。
- 该模式体现了七大设计原则中的合成复用原则:多用组合/聚合,少用继承, 从而令系统具有更大的弹性。
示例
开发阶段:父类Duck及其子类
- 假设有一个父类Duck,里面定义了各种鸭子的行为,包括quack(呱呱叫)、swim(游泳)、display(外观),同时有子类MallardDuck(绿头鸭)、RedheadDuck(红头鸭)和RubberDuck(橡皮鸭)继承了父类Duck,这样就有UML类图
- 很明显,RubberDuck这个子类违反了里氏替换原则
维护阶段:新增Fly方法
- 当需要让鸭子飞的时候,我们可能会自然地想到在父类Duck上提供fly方法,这样所有子类鸭子就都继承了这个fly方法,从而飞起