定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。
设计原则
1.将变化的部分独立出来并封装,以便以后可以轻易改动或扩充次部分,而不影响不需要变化的部分。
将Duck中的行为抽取出来。
2.针对接口编程,而不是实现编程。
Duck类及其子类不实现这些行为,而是把这些行为单独为一系列的类。
3.多用组合,少用继承。
鸭子的行为不是继承来的,而是和适当的行为对象“组合”来的。可将算法族封装成类,更可以“在运行时动态地改变行为”,只要组合的行为对象符合正确的接口标准即可。
鸭子:
Obj-C
Duck, QUackBehavior为基类
Duck类
QuackBehavior类
叫声为Gua的行为类QuackGua
实现代码
时间: 2024-11-03 16:45:06