ASP.net 中的頁面繼承實現和通用頁面的原廠模式的實現

來源:互聯網
上載者:User
最近用.Net做web項目的時候遇到了一些問題,就是很多的頁面的處理一樣的,不一樣的就是我們寫的預存程序不同,為了考慮代碼的重複利用和可維護性和可

擴充性,於是寫了一個對於單據頁面的原廠模式,採用介面的繼承技術,因為我們寫的ASP.net頁面的是代碼後置的,所以我們繼承的時候就繼承我們的後置的代碼,也就是我們說的XXXX.aspx.cs檔案。其實頁面的繼承和我們普通的類繼承一樣,只是ASP.net頁面的介面是HTML和後置代碼共同組成的,所以也有一些不同,好了先進開始我們的ASP.net頁面繼承之旅:

我在這裡總結了一幅在.net環境下用Rational XDE產生的UML圖給大家一個直觀感性的認識,我先來講解一些這副圖中的類和它們的關係,BillFactory類是我定義的單據工廠它來識別產生那種單據,VirturBillCOM是一個虛擬類(也可以是介面)它定義了一些方法讓繼承它的類來實現,IssueBillMng_Frm和IssueBill_Frm是頁面的後置代碼類,負責頁面的一些操作比如,按鈕狀態,調用商務邏輯等,BillInstorageMngList和IssueBillMng分別繼承VirturBillCom虛擬類來實現業務處理調用資料存放區層等,BillInstorageMngList負責入庫單的處理,IssueBillMng負責出庫單的處理。BillEntity和BillItemEntity是資料庫映射的實體類。BillInstorageMng繼承了頁面類IssueBillMng_Frm,BillInstorage繼承類頁面類IssueBill_Frm,大家可以看到,BillInstorageMng類和BillInstorage類由於繼承類頁面類,所以他們的類中只有一個空的建構函式,其他的都可以由它的父類處理,在這裡大家可能要問,這樣就可以完成頁面的繼承了嗎?,呵呵,這隻是其中的一步,為了達到和父類的頁面顯示同樣的效果,必須把父類中的HTML拷貝到子類的HTML中,這樣介面的顯示一樣了(如果你要改動一下介面可以在子類介面的HTML中改動添加按鈕等),但是有個問題是,在.net設計器中拷貝HTML到子類的頁面時,進入該子頁面的後置代碼的時候會自動的添加頁面上的伺服器控制項在變數聲明的地方,我們可以想象,這些控制項在父類已經存在了而且預設為保護類型為protected 所以子類也可以看到,所以控制項就會重複,就很出錯的,必須在子類中把父類已經用的控制項變數刪除掉,如果子類自己想有其他的操作可以自己加入控制項,但變數不能和父類重複。這樣很簡單就完成了頁面的繼承,大家可以試試,它可以減少很多的重複的代碼。

還有就是我想說的就是BillInstorageMngList類和IssueBillMng類,他們都繼承VirturBillCom實現了VirturBillCom定義的函數,他們是中介層,所以我們在頁面中調用的時候可以直接調用VirturBillCOM,具體真正的實現哪個執行個體由BillFactory來實現,這樣可能還有不明白的,具體的說在IssueBillMng_Frm的建構函式中(頁面的建構函式預設是沒有的,我們的自己加)聲明一個VirturBillCOM 的執行個體如:mgrObr = BillFactory(this);用工廠來判斷執行個體那個中介層變數來完成不同的工作。這就是簡單原廠模式,大家有不明白的可以看看設計模式。好了今天就說到這,有什麼不明白的可以在探討,雖然我的表達可能有些地方不太清楚,大家可以好好看看這副圖,是典型的原廠模式圖,好啦該下班回家了。祝大家晚間愉快。

作者:moshangchen 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.