發表於3年前(2011-08-21 15:00) 閱讀(457) | 評論(1) 4人收藏此文章, 我要收藏html
贊0web
做者:BirchLee 2011年8月20日 22時10分【學而不思則罔,思而不學則殆】mvc
本文內容:asp.net
1.什麼是MVP模式測試
2.Asp.net MVP模式簡單示例ui
1.什麼是MVP模式this
任何事物的出現,必有原由。spa
先看起源:軟件工程中一個基本的方法是分層結構。.net
1.智能用戶界面模式(Smart UI Pattern),這種模式下最爲經典當屬 Winform,用戶經過操做界面操做數據庫。
2.理解領域模型(Domain Model)也叫業務對象模型。
領域(Domain)分爲兩種:領域對象(Domain Object)和領域服務(Domain Service)。Domain Object承載了業務數據,包含須要持久化的屬性以及相關的業務邏輯。Domain Service包括了流程邏輯(Business Process)和控制邏輯(Business Rule).
3.二層結構模式(View-Model)模式
4.三層結構模式(View-Model-Data Access)
5.MVC模式(View-Model-Controller)
6.MVP模式(View-Model-Presenter)
上面介紹了Mvp模式的進化歷程,每種模式都是爲了解決上一種模式的不足而提出來的。Mvp要解決的問題是 Smart UI模式下,用戶界面和業務邏輯的分離,目的是爲了讓程序便於維護和測試。
2.Asp.net Mvp模式簡單示例
設置示例場景(Set the Sence):用戶輸入姓名後,顯示你好某某某。
具體實現:
//IView做用是數據對象的載體
public interface IView
{
//用於返回Hello 某某某
public Lable{get; set;}
//接收輸入的姓名
public Text{get;set;}
}
//進行業務處理,跟Controller相似,返回IView
public class Presenter
{
IView pview;
public Presenter(IView view)
{
pview=view;
}
//業務處理,返回處理結果
public buildText()
{
pview.Lable=string.Concat("您好:"+pview.Text);
}
}
//Default頁面代碼
<div>
<asp:Label ID="lbl" runat="server"></asp:Label>
<asp:TextBox ID="txt" runat="server"></asp:TextBox>
<asp:Button ID="bt" runat="server" Text="Enter" OnClick="btn_Click" />
</div>
//Default.cs代碼
public partial class Default: System.Web.UI.Page, IView
{
//實現接口
public string Text
{
get { return txt.Text; }
set { txt.Text = value; }
}
public string Lable
{
get { return lbl.Text; }
set { lbl.Text = value; }
}
//pageLoad事件
protected void Page_Load(object sender, EventArgs e)
{}
//按鈕點擊事件
protected void btn_Click(object sender, EventArgs e)
{
Presenter presenter = new Presenter(this);
presenter.buildtext();
}
}
以上就是Mvp的一個簡單示例,數據經過IView接口的實例進行傳遞,Presenter進行業務的處理,保留了Asp.net事件機制的優勢。
如下是參考文獻:
Model-View-Presenter官方資料
http://wiki.asp.net/page.aspx/340/mvp-pattern/
Domain Model介紹文章
<A style="PADDING-BOTTOM: 0px; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; COLOR: rgb(255,131,115); FONT-SIZE: 12px; PADDING-TOP: 0px" title=http://www.cnblogs.com/yimlin/archive/2006/06/15/426929.html href="http://www.cnblogs.com/yimlin/archive/2006/06/15/426929.html">http://www.cnblogs.com/yimlin/archive/2006/06/15/426929.html
MVC# .Net平臺下的MVP模式
<A style="PADDING-BOTTOM: 0px; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; COLOR: rgb(255,131,115); FONT-SIZE: 12px; PADDING-TOP: 0px" title=http://www.mvcsharp.org/Default.aspx href="http://www.mvcsharp.org/Default.aspx">http://www.mvcsharp.org/Default.aspx
Pro Asp.net MVC 3 FrameWork 一書