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