定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。

设计原则

1.将变化的部分独立出来并封装,以便以后可以轻易改动或扩充次部分,而不影响不需要变化的部分。

将Duck中的行为抽取出来。

2.针对接口编程,而不是实现编程。

Duck类及其子类不实现这些行为,而是把这些行为单独为一系列的类。

3.多用组合,少用继承。

鸭子的行为不是继承来的,而是和适当的行为对象“组合”来的。可将算法族封装成类,更可以“在运行时动态地改变行为”,只要组合的行为对象符合正确的接口标准即可。

鸭子:

Obj-C

Duck, QUackBehavior为基类

Duck类

QuackBehavior类

叫声为Gua的行为类QuackGua

实现代码

posted on 2015-05-17 10:53  梦丶想  阅读(129)  评论(0编辑  收藏  举报