設計模式的選擇和運用法則

既然可以從衆多設計模式中選擇,那麼如何識別哪一種設計模式適合本身要解決的問題呢?要弄清楚使用哪一種設計模式以及如何將解決方案模板應用於具體問題中,重要的是理解如下指導原則:算法

 

一、在不瞭解模式的狀況下不能運用它們。首要的是擴大本身的知識面並採用從抽象到具體的方法來學習模式和原則。實現某種模式的方法有不少。看到的模式的不一樣實現越多,就越能理解模式的目的以及單個模式能有不一樣實現。設計模式

二、是否有必要引入設計模式的複雜性?一般,開發者在學習設計模式時嘗試使用一種模式來解決全部問題。老是須要衡量實現某種模式所需的時間與該模式可以帶來的收益。謹記KISS原則:保持簡單淺顯。框架

三、將問題泛化,以更抽象的方式識別正在處理的問題。瞭解每一個模式和原則是如何編寫的。瞭解本身要解決的問題是否符合特定模式或原則試圖解決的問題。記住,設計模式是高層次的解決方案,試着把問題抽象,並且不要過於關注具體問題的細節。學習

四、瞭解具體相似性質的模式以及同組中的其餘模式。之前已經使用過某個模式並不意味着在解決該問題時它老是正確的模式選擇。ui

五、封裝變化的部分。瞭解應用程序中什麼可能發生變化。若是知道某個特殊的報價折扣算法將隨時間變化,那麼尋找一種模式來幫助您在不影響應用程序其他部分的狀況下改變該算法。設計

六、在選擇好設計模式後,確保在命名解決方案中的參與者時使用該模式的語言及領域語言。例如:若是正在使用策略模式爲不一樣的快遞公司計價提供解決方案,那麼相應地爲它們命名,如FedExShippingCostStrategy。經過結合使用模式的公共詞彙表和領域語言,全讓代碼更具可讀性,並且更可以讓其餘具有模式知識的開發者理解。ip

 

就設計模式而言,除了學習以外沒有其餘替代之法。對每種設計模式瞭解的越多,在運用它們時就會準備的更好。當遇到一個問題正在尋找解決方案時,掃描一下每種模式的目的,喚起本身的記憶 。開發

一種很好的學習方法是試着識別.NET框架中的模式。例如:Asp.Net Cache 使用了Singleton模式,在建立新的Guid實例時使用了Factory Method模式,.Net 2 XML類使用Factory Method模式,而 1.0 版本並無使用。模板

相關文章
相關標籤/搜索