下面情境描述了MVC的动态行为。处于简化的目的,这些示意图中只有一对视图-控制器

情境1 用户输入导致模型发生变化,进而触发变更传播机制

控制在其事件处理过程中接受用户输入、对事件进行解读并激活模型的服务过程。

模型执行请求的服务,导致其内部数据发生变化。

模型通知所有向变更传播机制注册了的视图和控制器,即调用他们的更新过程。

每个视图都向模型请求修改后的数据,并在屏幕上重新显示自己。

每个已注册的控制器都从模型哪里获取数据,以启用或禁用某些功能。例如,模型的数据被修改后,可能启用将数据存盘的菜单项。

原来的控制器重新获取控制权,并从事件处理过程返回。

情境2 初始化MVC模式中的组件。这种代码通常不在模型、视图和控制器中,例如,可能位于主程序中。每次打开模型的视图都将以类似的方式初始化视图和控制器。初始化组建的步骤如下:

创建模型实例,随后该实例将初始化其内部数据结构。

创建一个视图对象。这将把指向模型的引用作为参数,以便初始化视图。

视图调用关联(attach)过程,向模型的变更传播机制注册。

视图创建控制器,以继续完成初始化工作。它将指向模型和自己的引用传递给控制器的初始化过程。

控制器也调用关联过程,向变更传播机制进行注册。

初始化完成之后,应用程序开始处理事件。

查看原文 >>
相关文章