Working together
使用模式的最佳方式之一是让他们走出家门,这样他们就可以与其他模式互动。 你使用模式越多,你就会越多地看到它们一起出现在你的设计中。对于在设计中协同工作的一组模式,可以应用于许多问题,我们有一个特殊的名称:复合模式(Compound Pattern)。没错,我们现在说的是模式的模式!
- 模式经常一起使用,并结合在同一个设计解决方案中。
- 复合模式将两个或多个模式组合成解决重复出现或一般问题的解决方案。
Duck reunion
- 实现 Quackable 接口
- a Goose class:需要被 simulation 使用,使用适配器模式
- 使用 adapter
- 统计鸭叫的次数(要求不能修改原有的代码):装饰器模式(不改变原本代码,而增加功能,装饰者接口与被装饰者接口一致)
- 装饰者两个缺点:设计上的缺点(注意)
- 想要封装的更好:工厂模式,抽象工厂(所有的行为要么都被观测,要么不被观察)
- 抽象工厂
- 抽象产品
- Counting Duck Factory
- 产品都是装饰者鸭
- 三个模式的联用
- 不同的鸭群要分开管理,想要在一群鸭子上执行操作:组合模式,只是监听(中介者模式),实现对组合的整体操作,结合迭代器模式
- 实时跟踪每一个鸭子的叫的行为:观察者模式
练习题
- 变化点:adapter(不一致的接口)
- class diagram