MVP模式2011-12-29 博客园 Max Gan最近在公司开发时用到了一种挺特别的设计模式,这种模式很好的把UI分离出来,它把UI抽象出一个View,然后独立出一个Presentation来对View进行控制,把BLL很好的与UI接起来,这上面所提到的就是我们接下来要了解的MVP模式。好,下面让我们先看看一个应用程序的体系结构:

上图是从微软的msdn上拿下来的,很清晰可以看到,我们会把系统分为了好几块,分了这几块后本人感觉到的好处有两个:一是把系统很好的分层了,以后维护起来也是挺方便的,特别是在Presentation与UI这两层。二是把整个系统的开发,很好的分工了,它能清楚的告诉团队的每一个人自己写出来的服务或是组件给的用户是谁。说起来很抽象,还是写个例子吧。Default Page Code
1public partial class _Default : System.Web.UI.Page, IDefaultPageView 2{ 3 protected void Page_Load(object sender, EventArgs e) 4 { 5 DefaultPagePresentation presentation = new DefaultPagePresentation(this); 6 if (ButtonOnClick != null) 7 { 8 ButtonOnClick(sender, e); 9 }10 }1112 IDefaultPageView 成员#region IDefaultPageView 成员1314 public event EventHandler ButtonOnClick;1516 public void ShowMessage(string pStr)17 {18 Response.Write(pStr);19 }2021 #endregion22}2324/**//// <summary>25/// Default页面抽象视图26/// </summary>27public interface IDefaultPageView28{29 void ShowMessage(string pStr);30 event EventHandler ButtonOnClick;31}3233/**//// <summary>34/// 控制类35/// </summary>36public class DefaultPagePresentation37{38 private IDefaultPageView _view;3940 public DefaultPagePresentation(IDefaultPageView pView)41 {42 _view = pView;43 _view.ButtonOnClick += new EventHandler(_view_ButtonOnClick);44 }4546 void _view_ButtonOnClick(object sender, EventArgs e)47 {48 _view.ShowMessage("Hello world!");49 }50}51
从上面的例子的效果是一运行就会输出 "Hello world!" 。不用多解释了,说多了也没用,大家还是看代码吧。