ASP.NET開發(fā),一開始是為了超趕時間完成任務(wù),只能把功能實現(xiàn)即可。如下面一個功能,在網(wǎng)頁中有一個銨鈕,用戶點一點切換網(wǎng)頁的圖片,再點一點又切換回來。我們要怎樣做?在銨鈕事件中去變更圖片的路徑即可。
這個例子,Insus.NET找到兩張圖片,圖片來自《ASP.NET的適配器設(shè)計模式(Adapter)》http://m.survivalescaperooms.com/insus/archive/2013/02/04/2891426.html。銨鈕也參考了《關(guān)于母版頁的按鈕事件》http://m.survivalescaperooms.com/insus/archive/2012/03/09/2387829.html和《用戶控件如何控制ASPX頁面的控件》http://m.survivalescaperooms.com/insus/archive/2012/04/16/2451664.html。
OK,把兩張圖片放在站點下,并創(chuàng)建一個網(wǎng)頁,如Default.aspx:
在Default.aspx.cs的Button1_Click事件:
演示:
你是這樣開發(fā)嗎?很簡單吧,很快就可以完成并提交開發(fā)任務(wù)了吧。 你會說:不,用javascript和jQuery實現(xiàn)更快,更好效率,更好維護(hù)。Insus.NET想說的是Javascript和jQuery不在此討論范圍。我們需要討論的是ASP.NET開發(fā)。下面Insus.NET使用面向?qū)ο髞黹_發(fā),先在Default.aspx改寫一些:
此時我們可以把圖片看當(dāng)一個對象Light,創(chuàng)建一個類:
我們不可能把燈接到一個常開的線電路中去,即是說,需要在電路中安裝一個開關(guān)。用戶給這個開關(guān)一個“開”還是“關(guān)”的指令。因此還要創(chuàng)建一個對象Switch類:
兩個對象Light和Swtich完成了,現(xiàn)在來看看xxx.aspx.cs的銨鈕事件怎樣實現(xiàn):
再次演示:
本例全部實現(xiàn)完成,運用了面向?qū)ο箝_發(fā) ,兩個類中實際上有使用了中介者設(shè)計模式和內(nèi)部一些協(xié)作進(jìn)行封裝。
演示源代碼可從下面鏈接下載(Default是重構(gòu)前,Default2是重構(gòu)后):http://download.VEVb.com/insus/Refactoring/mediator_refactor_OO.rar
新聞熱點
疑難解答