一、定义
从高级术语上说,MVC模式意味着一个MVC应用程序被分离成至少三部分。
- 模型(Model):含有或表现用户进行操作的数据。模型可以是简单的视图模型(View Model),他们只表现视图与控制器之间传递的数据;也可以是域模型(Domain Model),它包含业务领域的数据,以及处理这些数据的操作,转换和规则。
- 视图(View):用于将模型的某些部分渲染成用户界面。
- 控制器(Controller):处理传入的请求,执行模型上的操作,并选择渲染给用户的视图。
二、MVC与其他模式
1. 理解“智能UI”模式
最常用的设计模式之一是智能用户界面(Smart User Interface)。为了建立智能UI应用程序,开发者需要构造一个用户界面,通常是将一组组件或控件拖放到设计界面或画布上。这些控件通常通过对单击按钮、按键、鼠标移动等发送事件的报告来与用户进行交互。开发者将代码添加到一系列的事件处理程序中,以便对这些事件作出响应。
最大的缺点
是难以维护和扩展。域模型与带有用户界面代码的业务逻辑混搭在一起,这导致了重复。也即,为了支持新添加的组件,需要重复复制并粘贴同样的业务逻辑片段。要想添加一个新的特性而不破坏已有的特性,几乎是不可能的。在MVC的世界里,智能UI通常被认为是一种抵抗模式
2. 理解“模型-视图”架构
“模型-视图”架构提供了一种改进方法,它将事情逻辑抽取出来形成一个独立的域模型,在这种做法中,数据、过程以及规则都被集中在应用程序的一个部件中。然而也产生了两个问题:一是UI和域模型结合的很紧密,对每一个部分的单元测试都很困难。二是来自实际情况,模型通常含有大量的数据访问代码,这意味着,数据模型不仅仅包含事务数据、操作和规则。
3.理解经典三层架构
为了解决“模型-视图”存在的问题,将持久化代码从域模型中分离出来,并放入一个叫做“数据访问层(DAL)”的新组件中。
最大的问题三层结构中的UI部分可能特别复杂,存在大量不能严格测试的代码。
4.理解MVC的变异
- “模型-视图-呈现器(Model-View-Presenter)”,以便更容易的适应状态化的GUI平台,如Windows Form 和 ASP.NET Web Form。在这种模式中,呈现器具有MVC控制器同样的职责,但他与状态化视图有更直接的关系,根据用户的输入和动作,直接管理UI组件中显示的数据。该模式有以下两个实现:
被动式视图:视图不包含逻辑,他是UI控件的容器,由呈现器直接进行操纵。
监管控制器:视图要负责一些具有表现逻辑的元素,如数据绑定,并给出对域模型数据源的引用。
- “模型-视图-视图模型(Model-View-View Model)”,它源于微软,并被用于WPF。模型视图,暴露了视图中待显示数据的模型属性,也暴露了能够通过UI进行调用的对数据的操作。

被折叠的 条评论
为什么被折叠?



