12.复合模式
MVC,模型利用“观察者”让控制器和视图可以随最新的状态改变而更新,视图和控制器则实现了“策略模式”,控制器是视图的行为,如果你希望有不同的行为,可以直接换一个控制器。视图内部使用组合模式来管理窗口、按钮以及其他显示组件。
视图和控制器实现了经典的策略模式:视图是一个对象,可以被调整使用不同的策略,而控制器提供了策略。视图只关心系统中可视的部分,对于任何界面行为,都委托给控制器处理。使用策略模式也可以让视图和模型之间的关系解耦,因为控制器负责和模型交互来传递用户的请求。对于工作是怎么完成的,视图毫不知情。
显示包括了窗口、面板、按钮、文本标签等。每个显示组件如果不是组合节点(例如窗口),就是叶节点(例如按钮)。当控制器告诉视图更新时,只需告诉视图最顶层的组件即可,组合会处理其余的事。
模型实现了观察者模式,当状态改变时,相关对象将持续更新。使用观察者模式,可以让模型完全独立于视图和控制器。同一个模型可以使用不同的视图,甚至可以同时使用多个视图。
MVC是复合模式,结合了观察者模式、策略模式和组合模式。
- 模型使用观察者模式,以便观察者更新,同时保持两者之间解耦。
- 控制器是视图的策略,视图可以使用不同的控制器实现,得到不同的行为。
- 视图使用组合模式模式实现用户界面,用户界面通常组合了嵌套的组件,像面板、框架和按钮。
- 这些模式携手合作,把MVC模型的三层解耦,这样可以保持设计干净又有弹性。
- 适配器模式用来将新的模型适配成已有的视图和控制器。