图说设计模式 (一)Strategy

很久很久以前, 野鸭(MallardDuck)和 红头鸭(RedheadDuck)继承自Duck。



现在我们想让鸭子飞起来



问题出现了,我们又新添加了 橡胶鸭子(RubberDuck),但是RubberDuck不能飞




继承的就像富二代,什么也不做也什么都有,我可不想去再去创一次业,重fly()一次,就像富爸爸给三个儿子财产不均,这个儿子可定会闹事的。




继承必须是所有子类共有的方法,如果不是的话,继承就变得不那么美了,我们可以重构,把不是通用的方法提炼到接口里面。




这样就好了,我们就可以以不变应万变,如何做到呢?就是把变化的和不变的分离。
Separating what changes from what stays the same


怎么分离呢,这就是传说中的 面向借口编程。





这就是OCP(Open-Close Principle)啊,Software entities should be open for extension, but close for modification.


Replace inheritance with delegation


全图


又一个设计原则


恭喜

猜你喜欢

转载自jiaozhiguang-126-com.iteye.com/blog/1608849