MVP模式

--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输入归集等。

cc188690.fig01(en-us)

图1, Application Architecture


Following the MVP

 

正如你在图2中看到的,此项目的UI是比较标准, 页面加载的时候,屏幕显示一个下拉框, 从Northwind数据库装入所有的Customers, 如果你从下拉菜单选择一个Customer,页面会更新以显示那个Customer的详细。 用MVP模式,可以把行为从UI转移到它们自己的类中。 图3显示了不同类之间的联系。

cc188690.fig02(en-us)

图2, 客户信息

 

注意Presenter并不了解具体UI层, 它只和接口联系, 但是不知道接口的具体实现。 这么做强化了Presenter在不同UI技术间的重用性。(我的理解是Web或者Winform)。

(未完待续…)

posted @ 2013-03-28 06:17  grkin  阅读(1117)  评论(0编辑  收藏  举报