MVP模式

当意识到这个问题的时候,似乎离好的解决方案的出现也不远了,Castle开源组织想到了在Asp.Net中应用MVC模式,开发出了MonoRails,第一个asp.net版的MVC框架,应该是MVC的Model2模型,MVC模型是一个很好的分层模型,它有好多变种,其中Model2就是一个相当不错的变种,也有大量开发人员在自己的项目里手工实现了这一模型,Asp.net MVC Framework的出现彻底普及了.Net界的以MVC模型思想为基础的框架,大量的开发人员开始学习研究ASP.Net MVC Framework,我记得我的好朋友重典就是其中一位,它并且应用到他的开源项目CHSNS中。

MVP是MVC模式的另一个变种,MVP即可以应用到WEB项目中, 也可以应用到Winform项目中,它的方便的测试机制为大型复杂的企业级应用带来了福音,下图是基于我的理解,画的MVP模式的层次图。

 image

从图中可知道,MVP有Model-Presenter-View三个层次,下面是时序图

image

Controller层是负责状态保存和页面流转的有时根据需要,也需要Controller的参与

 

 

image

由以上几幅图综合分析可知,Presenter相当于中介者的作用,它负责接收视图发送来的请求,调用Model服务接口,Presenter再把处理结果反映到View,Presenter可以不对View层作强引用,可以接口引用,这样任何一个Presenter都不会依赖于任何一个具体的视图,而是依赖于具体的接口,一个视图接口可以有好几个的实现,大部分展现逻辑都有Presenter层中,它是一个具体的类,可测试性级高;同时Presenter与WEB或是Win无关,这就更增加了MVP的可测试性。View的具体实现有对Presenter的强引用,在测试时我们只要制作一个Mock的VIEW,实现View即实现接口IView,就可以测试了。所以说复杂的企业级应用我觉得用MVP模式比较合适。

View层即一系列视图规约(视图接口类)和视图的具体实现,视图规约定了可以从该视图取得哪些信息和可以调用哪些接口更新视图。

posted on 2009-09-07 13:29  落英  阅读(269)  评论(0)    收藏  举报