翻译 CodeProject 上的一篇文章,对常见的几种表现模式 (Presentation patterns) 进行了说明,并进行对比。原文地址是 https://www.codeproject.com/KB/aspnet/ArchitectureComparison.aspx。
与用户界面 (UI) 相关的最大的问题就是大量的凌乱的代码,主要是由这两个因素造成的,首先是用户界面包含负责的逻辑用于维护界面相关对象,其次也包含了应用程序状态的维护。表现模式 (Presentation patterns) 就是围绕如何移除用户界面的复杂性,让界面更加简洁和可管理而产生的,下图就是常见表现模式的种类与分类:

这三大问题与用户界面的关系如下图:

表现设计模式有助于解决上面列出的问题, 它的的基本逻辑就是创建一个额外的表现类 (Presenter) ,用来消化用户界面中复杂的逻辑,数据和同步的问题,从而使得用户界面变得简单明了。根据这个类承担责任的多少,决定了表现设计模式的类型,可能是 SC , PV , PM 等,也就是说,这个类型的成熟度决定了它将是那种设计模式。




![]()

下表是这几种表现模式从状态,逻辑与同步的角度进行的对比
| 状态 | 逻辑 | 同步 | ||
| Supervising controller | ||||
| 表现类 | X | X | ||
| 视图 | X | |||
| 业务模型 | 视图和业务模型之间通过绑定进行连接。 | |||
| Passive View | ||||
| 表现类 | X | X | ||
| 视图 | X | |||
| Presenter model | ||||
| 表现类 | X | X | ||
| 视图 | X | |||
| MVVM | ||||
| 表现类 | X | X | ||
| 视图 | X | |||
| 使用 WPF 、Silverlight 的数据绑定机制 | ||||
| MVC | ||||
| 控制器 | X | X | ||
| 视图 | X | |||
再来一个图的对比
