定义
复合模式结合两个或以上的模式,组成一个解决方案,解决一再发生的一般性问题
从鸭子模拟器说起
- 原本有一群鸭子,继承自同一个 Quackable 接口,实现 quack方法,模拟器传入鸭子,就会调用鸭子的 quack 方法,发出声音
- 这时为了让鹅也可以被模拟器调用,使用适配器模式,让鹅看起来像是鸭子
- 这时有了新的需求,希望可以统计叫声。用装饰者模式可以对鸭子增加额外的行为
- 为了统一将所有的鸭子的叫声都被计数,而不是部分有部分无。可以将鸭子的创建交给工厂,由工厂模式控制创建计数的包装过的鸭子还是普通鸭子
- 鸭子数量多了起来,为了方便管理,需要使用集合来存放。要访问鸭子的行为,就需要迭代器模式
- 当需要跟踪某只鸭子的行为,可以通过注册观察者的方式,使得鸭子有某种行为时可以通知观察者
MVC
- 是一种复合模式,结合了观察者,策略和组合模式
- 模型使用观察者模式
- 控制器是视图的策略
- 视图使用组合模式
- 适配器模式可以使新的模式适用于原有的视图和控制器
- Model 2 是 MVC 在 Web上的调整,控制器实现成Sevlet,而JSP/HTML实现视图