您的位置:首页 > 其它

设计模式-1-策略者模式

2016-04-03 22:53 351 查看
策略者模式概念:

定义一系列算法,把他们一个个封装起来,并且使他们可互相替换。该模式是的算法课独立于使用它的客户而变化。

设计原则:

1.  将应用中需要经常变化的代码独立出来,应和那些不需要经常变化的代码分开。 

2.  应针对接口,而不是类进行编程。 (!!!感觉是策略者模式重点,针对接口)

3.  在类中应多用组合,少用继承。



1.公司要设计一款游戏:SimUDuck,有各种鸭子

鸭子的行为:
swim() : 所有的鸭子都会游泳且都相同   应该在抽象积累中实现
fly()和quack(): 不是所有的鸭子的特性,有的鸭子会飞有的不会,有的会鸣叫有的不会,两个行为设计成接口,独立于Duck基类,由具体类来实现。----即为策略者模式中的算法族,独立于基类改变。

display() :所有鸭子都有 但是不相同应该在积累中声明一个接口然后在子类中实现。

代码:

基类  鸭子类



fly行为接口



会飞的行为 



不会飞行为



quack()行为接口



会quack()



不会quack()


、、

模型鸭子 不会fly()  不会quack()



测试类:





小结:

将基类中的所有对象都有且一样的行为,在抽象基类中实现,让子类复用(此处swim());所有对象都有但行为内容不一定完全一样的,写成接口让具体子类去实现各自的特性(此处display());不是所有的对象都有,差异较大的,经常变化的,抽取出来写成接口,不同的行为内容用不同的子类来实现这个接口此处的的(fly()和qucak())---算法族,这样也可以做到这两个行为与基类完全分离,可以随意变化,通过一个个算法替换来进行相应的功能转换,耦合度较低,扩展性较好。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: