--by Jean-Paul Boodhoo
首先声明,这种模式可能已经过时,这里只是作为补充知识,回顾一下。
快速导航
Following the MVP
第一次试运行
填充下拉菜单
实现View接口
下一步是什么?
UI创建技术,例如 ASP.NET 和Window Forms变得进一步强大, UI经常干了它不该干的活。责任区分不清, 经常把其他层的逻辑都拿了过来。MVP模式很好的解决了这个问题。这我用MVP模式建立了一个显示窗口,使用的是Northwind数据库。
UI层充斥一堆逻辑的坏处? 相同的代码重复出现在几个常用的视图里。 测试困难,维护丑陋的UI运行脚本困难。重构的时候,MVP模式可以发挥其作用。重用代码使其容易测试。
图1,组成示例应用的分层代码, 注意UI和表示层Presentation是分开的,你可能以为两者是一回事。但其实,UI层只包含Forms和控件, WebForm项目里,主要就是Webform, User control, 和Server control, Winform项目里,主要就是一堆Windows Form, user control, 第三方库。 这个额外的Prentation层使显示和业务分离。 在Presentation层你可能要实现,验证显示,UI输入归集等。
图1, Application Architecture
Following the MVP
正如你在图2中看到的,此项目的UI是比较标准, 页面加载的时候,屏幕显示一个下拉框, 从Northwind数据库装入所有的Customers, 如果你从下拉菜单选择一个Customer,页面会更新以显示那个Customer的详细。 用MVP模式,可以把行为从UI转移到它们自己的类中。 图3显示了不同类之间的联系。
图2, 客户信息
注意Presenter并不了解具体UI层, 它只和接口联系, 但是不知道接口的具体实现。 这么做强化了Presenter在不同UI技术间的重用性。(我的理解是Web或者Winform)。
(未完待续…)