交互式系统(MVC模式)
下面情境描述了MVC的动态行为。处于简化的目的,这些示意图中只有一对视图-控制器
情境1 用户输入导致模型发生变化,进而触发变更传播机制
- 控制器在其事件处理过程中接受用户输入、对事件进行解读并激活模型的服务过程。
- 模型执行请求的服务,导致其内部数据发生变化。
- 模型通知所有向变更传播机制注册了的视图和控制器,即调用他们的更新过程。
- 每个视图都向模型请求修改后的数据,并在屏幕上重新显示自己。
- 每个已注册的控制器都从模型哪里获取数据,以启用或禁用某些功能。例如,模型的数据被修改后,可能启用将数据存盘的菜单项。
- 原来的控制器重新获取控制权,并从事件处理过程返回。
情境2 初始化MVC模式中的组件。这种代码通常不在模型、视图和控制器中,例如,可能位于主程序中。每次打开模型的视图都将以类似的方式初始化视图和控制器。初始化组建的步骤如下:
- 创建模型实例,随后该实例将初始化其内部数据结构。
- 创建一个视图对象。这将把指向模型的引用作为参数,以便初始化视图。
- 视图调用关联(attach)过程,向模型的变更传播机制注册。
- 视图创建控制器,以继续完成初始化工作。它将指向模型和自己的引用传递给控制器的初始化过程。
- 控制器也调用关联过程,向变更传播机制进行注册。
- 初始化完成之后,应用程序开始处理事件。