国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
初探MVP(ModelViewPresenter)設(shè)計模式
初探 MVP(Model View Presenter) 設(shè)計模式 剛剛轉(zhuǎn)入C#開發(fā)不久,發(fā)現(xiàn)了一個類似于Java里的MVC模式的東東——MVP(Model View Presenter) 模式,個人感覺MVP模式真的和MVC差不多,MVC我這里就不解釋了,著重講講MVP,MVP 里的M 其實和MVC里的M是一個,都是封裝了核心數(shù)據(jù)、邏輯和功能的計算關(guān)系的模型(這里我們不做重點介紹),而V是視圖(窗體),P我認為就是封裝了窗體中的所有操作、響應(yīng)用戶的輸入輸出、事件等,個人感覺和MVC里的C差不多,區(qū)別是MVC是系統(tǒng)級架構(gòu)的,而MVP是用在某個特定頁面上的,也就是說MVP的靈活性要遠遠大于MVC,實現(xiàn)起來也極為簡單。 下面以一個實例來講接,先看源碼:一共三個文件: "接口:ITestMvpView"、"窗體:FrmTestMvp"," Presenter TestMvpPresenter"先看ITestMvpView代碼:namespace TEST_MVP{ //聲明委托 public delegate void Button1_Click(); interface ITestMvpView { //聲明控件 TextBox TextBox1{get;} //事件 event Button1_Click Click; }}窗體代碼:namespace TEST_MVP{ public partial class FrmTestMvp : Form, ITestMvpView { private TestMvpPresenter _testMvpPresenter; public FrmTestMvp() { InitializeComponent(); //注意構(gòu)造Presenter時需把自身傳過去 this._testMvpPresenter = new TestMvpPresenter(this); } //單擊按鈕事件 private void button1_Click(object sender, EventArgs e) { if (Click != null) { Click(); } } #region ITestMvpView 成員 //實現(xiàn)接口屬性方法 public TextBox TextBox1 { get { return this.textBox1; } } //委托事件 public new event Button1_Click Click; #endregion }}Presenter 代碼:namespace TEST_MVP{ class TestMvpPresenter { private ITestMvpView _testMvpView; // 構(gòu)造函數(shù),傳入視圖接口 public TestMvpPresenter(ITestMvpView testMvpView) { this._testMvpView = testMvpView; this.InitEvent(); } //加載委托事件 private void InitEvent() { this._testMvpView.Click += new Button1_Click(_testMvpView_Click); } //處理事件 void _testMvpView_Click() { if (CheckValue()) { this.ShowMessage(this._testMvpView.TextBox1.Text); } else { this.ShowMessage("輸入的值不能為空!"); this._testMvpView.TextBox1.Focus(); } } //檢查TestBox1的輸入值是否合法 private bool CheckValue() { if (this._testMvpView.TextBox1.Text.ToString() == "") { return false; } return true; } private void ShowMessage(string message) { MessageBox.Show(message); } } 由上面的代碼我們可以看出其實接口里聲明的事件和控件都是要在Presenter里要處理窗體中的信息,TextBox控件如此、委托事件也是如此,他們都是要在P中處理的。重要的是窗體必須實現(xiàn)IView接口并且必須New 一個P,把自身作為參數(shù)傳到P里,這樣在P里就可以利用多態(tài)訪問窗體的成員了。并且重點是在窗體里我們可以利用委托或其他技術(shù),把對用戶輸入輸出、事件的響應(yīng),全部放到P里處理。因為P不知道窗體,只知道IView,所以我們可以建立多個不同的窗體來對應(yīng)一個P了,只要他們的業(yè)務(wù)邏輯、事件處理相同即可,換句話說即P并不知道窗體是windwosForm的還是webForm的,他只知道IViw接口,只要是實現(xiàn)了IView接口的窗體就行。所以如果能夠很好的利用MVP來編程,則窗體將變得非常簡單 , 甚至可以讓毫無經(jīng)驗的編碼人員來負責(zé)窗體的UI設(shè)計等,真的是很方便,另外對將來的有WebForm和WindowsForm的互相轉(zhuǎn)換打下良好的技術(shù)基礎(chǔ),甚至你可以兩套東西并行開發(fā),采用MVP模式會使這變得極為簡單。最后本文中提到的例子可以在csdn中下載到,網(wǎng)址為:http://download.csdn.net/source/279995另外如果對MVP設(shè)計模式感興趣的話可以到msnd上搜索,微軟有專門的文章介紹,也歡迎留言和我一起討論。
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Android 源碼設(shè)計模式
MVP模式
MVP——Model-Viewer-Presenter
MVC,MVP 和 MVVM 的圖示
MVC、MVP、MVVM 模式對比
MVC和MVP的區(qū)別
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服