翻译 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 |
再来一个图的对比