我們在開發asp.net時,經常有使用if...else...或者是使用switch來進行多個條件判斷。如下面這篇《用戶控件(UserControl) 使用事件 Ver2》http://www.companysz.com/insus/archive/2011/11/18/2253605.html,就是一段代碼:
其實按上面的寫法一點問題都沒有,但是我們在審檢代碼看到這段代碼時似乎要花點時間閱讀,用意也不夠明朗,藕合性也高。建議把每個case塊寫成一個獨立的方法。然后再調用它,目的是為最小化方法。這樣子,程序就可以改為:
修改到這里,我們需要復習一下設計模式的中介者(Mediator)模式,更多實例可參考《設計模式--中介(Mediator)模式》http://www.companysz.com/insus/p/4134383.html和《開發(ASP.NET程序)把寫代碼寫至最有面向對象味道》http://www.companysz.com/insus/p/4139346.html。意思就是說,當遇上有多個if或是switch時,我們是可以使用中介者設計模式來解決,說白了就是替換。下面我們創建一個中介者:
寫好了,我們就可以重構switch程序了:
實時執行演示,得到的結果與原來一模一樣:
本篇有告訴我們,程序不是一次寫好,而是經過重構才會寫得完善,房子建好之后只能是毛坯房,是需要裝修,Insus.NET對重構的理解,就是對原本質沒有太大改變時,去做一些變動,適合舒適。重構的同時,往往會帶有設計模式的理念進行。本演示源程序可從下面鏈接下載:http://download.VEVb.com/insus/Refactoring/fact_switch_mediator_pattern.rar
新聞熱點
疑難解答