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

2022-09-14 06:24:17 字數 981 閱讀 5539

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

1、在不了解模式的情況下不能運用它們。首要的是擴大自己的知識面並採用從抽象到具體的方法來學習模式和原則。實現某種模式的方法有很多。看到的模式的不同實現越多,就越能理解模式的目的以及單個模式能有不同實現。

2、是否有必要引入設計模式的複雜性?通常,開發者在學習設計模式時嘗試使用一種模式來解決所有問題。總是需要衡量實現某種模式所需的時間與該模式能夠帶來的收益。謹記kiss原則:保持簡單淺顯。

3、將問題泛化,以更抽象的方式識別正在處理的問題。了解每個模式和原則是如何編寫的。了解自己要解決的問題是否符合特定模式或原則試**決的問題。記住,設計模式是高層次的解決方案,試著把問題抽象,而且不要過於關注具體問題的細節。

4、了解具體類似性質的模式以及同組中的其他模式。以前已經使用過某個模式並不意味著在解決該問題時它總是正確的模式選擇。

5、封裝變化的部分。了解應用程式中什麼可能發生變化。如果知道某個特殊的**折扣演算法將隨時間變化,那麼尋找一種模式來幫助您在不影響應用程式其餘部分的情況下改變該演算法。

6、在選擇好設計模式後,確保在命名解決方案中的參與者時使用該模式的語言及領域語言。例如:如果正在使用策略模式為不同的快遞公司計價提供解決方案,那麼相應地為它們命名,如fedexshippingcoststrategy。通過結合使用模式的公共詞彙表和領域語言,全讓**更具可讀性,而且更能夠讓其他具備模式知識的開發者理解。

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

一種很好的學習方法是試著識別.net框架中的模式。例如:asp.net cache 使用了singleton模式,在建立新的guid例項時使用了factory method模式,.net 2 xml類使用factory method模式,而 1.0 版本並沒有使用。

Spring運用的設計模式

jdk動態 返回 物件 proxy newproxyinstance classloader loader,class inte ces,invocationhandler h 通過執行物件呼叫目標物件的方法,增強的邏輯是寫invocationhandler的例項在invoke loader 目標類...

實踐中的設計模式運用

在專案中用到全文檢索,大家知道全文檢索是對索引的檢索,由於用全文檢索搜尋出來的東西可能並不都是使用者需要的,所以就增加了乙個過濾功能,就是從全文檢索搜尋出來的結果集中排除不符合條件的 當然條件是多種多樣的,也可能是多種組合的 在我們專案中條件是許可權的限制,資料夾的限制,修改時間的限制以及這三種限制...

設計模式的幾種用法

設計模式 工廠模式 用類和物件模擬工廠生產汽車的模式 class bmw def init self,name self.name name class bonz def init self,name self.name name class ca tory staticmethod def mak...