策略模式这一章已经看完了,策略模式的定义:定义了算法族,分别把它们封装起来,让它们之间可以相互转换,此模式让算法的变化独立于使用算法的用户。
每一只鸭子都有一个FlyBehavior和一个QuackBehavior,将飞行和叫声委托给它们代为处理。将两个类结合起来使用,就是鸭子例子一样这就是组合。这种做法和继承不同的地方在于,鸭子的行为不是继承来的,而是和适当的行为对象组合而来的
设计原则:多用组合,少用继承。使用组合建立系统具有很大的弹性,不仅可以将算法族封装成类,还可以“在运行时动态的改变行为”,只要组合的行为对象符合正确的接口标准。