模型-视图-控制器——系统结构模式学习笔记

来源:互联网 发布:主网络和访客网络 编辑:程序博客网 时间:2024/04/30 12:34

MVC体系结构模式将一个交互式系统分为三个组件。模型包含核心功能和数据。视图向用户显示信息。控制器处理用户输入。视图和控制器共同构成了用户接口。变更传播机制保证了用户接口和模型之间的一致性。其实,订阅者模式也可以有此保证。

1. 例子

一个简单的政治选举系统。

2. 语境

具有灵活的人机接口的交互式系统。

3. 问题

功能和数据保持稳定,但是用户接口经常发生更改。

1) 相同的信息在不同的窗口有不同的显示。

2) 实时性,对数据的操作要能够实时的反映到各个显示。

3) 用户接口易于更改,而且可能在运行期更改。

4) 对用户接口的更改不影响程序内核。

4. 解决方案

1) 模型封装了程序核心的数据和功能,独立于视图和控制器;(也可以理解为一种微内核结构)

2) 视图和控制器将用户的操作转化为对对核心数据(功能)的读取和更改;

3) 一个模型可能对应多个视图;

4) 一个视图对模型的更改,模型要及时通知给所有的视图。

5. 结构

模型组件包含了应用程序的功能内核,封装了功能和数据的接口,供视图调用,访问;

变更传播机制:视图向模型注册,如果模型发生更改,模型通过此注册通知视图,实现变更传播机制。

视图组件向用户显示信息,视图向模型注册来实现更改传播机制。

控制器接收用户的输入,将用户的输入转化为对视图的调用。

6. 动态特性

7. 实现

1) 分离出核心功能。将核心功能和数据从用户输入输出中分离出来,并对外提供给视图访问接口。

2) 实现变更传播机制。可以采用订阅者模式。

3) 设计并实现视图。设计视图的外观,设计对控制器的接口。

4) 设计并实现控制器。

5) 创建动态视图。

8. 效果

优点:

1) 同一模型多视图;

2) 同步化视图。(变更传播机制)

3) 可插入的视图和控制器。

4) 框架潜力。

不足:

1) 增加了复杂度;

2) 潜在的过多的更新因素。

3) 视图和控制器的紧密连接。

4) 视图控制器与模型的紧密耦合。

5) 视图中数据访问的低效率。

原创粉丝点击