Head Frist中-------- 策略模式 加一些个人描述

奋斗

  这是Head FrisHead Frist中-中的一个例子,小弟是刚看没几天 然后写出来目的是想跟小伙伴们一块讨论讨论,欢迎大神来指点。大笑


简单的一个鸭子案列

     公司上班做了一相当成功的模拟鸭子游戏; SimUDuck 游戏中出现各种鸭子,一边溪水 一边呱呱叫。此系统内部设计使用了 标准的OOP技术,设计了一个鸭子超类(Super Class) ,并让各种鸭子继承此超类。   


如上图这样。


但由于后期需要新增一些创新的东西,比如让鸭子飞,于是 他在超类中加了 fly()  方法。 但是可怕的事情发生了  领导开会儿 展示的时候 看到橡皮鸭在飞来飞去,于是他重新改把橡皮鸭类中的 fly() 覆盖为空,什么都不做。可是如果 再加入 诱饵鸭、木头鸭呢;  你会怎么做?


现在我们来整理一下 : 

     鸭子       1. 颜色

          2. 叫

  3. 飞

                                          鸭子的 飞和叫 是易变部分 我们可以抽取出来(这里我有一点想不通,颜色是不是也可以抽出来呢?) 


           





     下面我们来整合一下,   将 飞和呱呱叫 这两个行为 作为 鸭子的 实例变量(这里鸭子不是接口了,继承鸭子超类的话,我们可以运用它们共同的部分,所以这里用更继承合适)





在这里添加两个 方法 ,告诉它 鸭子怎么飞 ,怎么叫; 




我们在鸭子类 将 飞和叫  委托给接口, 调用上面 set 进来的 鸭子飞和叫的行为 。



下面 我们开始 测试。   我这里的 飞和叫的方法名  跟上图不一致, 但道理是一样的。




希望可以帮到你们,  小弟 有个问题请教 那颜色如果也抽取出来的话  鸭子超类用接口 用抽样类  就一样了吧?   如果全抽取出来的话 还适合用这种模式吗? 




你可能感兴趣的:(设计模式,模式,head,策略模式,first,鸭子)