一、知易行難——設計模式應用的問題
「形而下者謂之器,形而上者謂之道」。
有很多人熟讀且牢記每乙個模式的內容,但到真實專案中時卻總感覺到無從下手去實踐設計模式,不知道什麼情況下應該用,不知道為什麼要這樣用。這種情況說明,很多人只是掌握了設計模式的器,並未掌握設計模式的道。設計模式的器,只是告訴了我們如何去做,設計模式的道,就是告訴我們為什麼要使用和什麼時候去使用。
二、撥雲見日——尋找設計模式之道
設計模式都有其適用的場景。我們如何去選擇乙個合適的模式應用到場景中呢?《設計模式》書本中每乙個模式後都有闡述適用性,但是23個模式本身內容就不少,能熟記所有的內容就不好做到,更不要說記住每個模式的適用性了。那麼在實際應用中,要解決什麼時候去使用某個設計模式?為什麼要使用?這兩個疑難點,其實只要一句話就足以概括——「對變化的概念進行封裝;找到變化,封裝變化」。
所以當我們在實際開發中,某個場景中遇到了關於擴充套件性的問題,那麼說明這個場景中是有變化存在的,那麼我麼就首先解決了where的問題。再根據場景擴充套件性的需要,去看哪個模式最適合解決這個問題,那麼就解決了why的問題
三、庖丁解牛——解析設計模式之道
首先,「找到變化」解決了「在**」使用設計模式的問題,即回答了where的問題。
根據對行業的了解和經驗,很容易在某個場景下找到哪些業務是可能會變化的,那麼我們就去封裝這個業務的變化。但是,如果我們涉及到的需求是個從來沒接觸過的行業,那麼我們怎麼去確定哪些業務場景是存在變化的?這時,因為我們對這個行業的經驗不夠多,因此我們可以將「唯一不變的就是變化」這句話做為準則,去懷疑一切業務場景都可能發生變化。但是,在去懷疑一切業務場景時也必須有個結束條件,這個條件一般就是時間。我們可以通過1年內、3年內或5年內,哪些業務是有可能發生變化的,去尋找變化,當確定了乙個時間範圍後,我們可以向有經驗的老鳥請教某某業務x年內可能發生變化嗎?這樣也顯的不會無的放矢。
其次,「封裝變化」解決了「為什麼」使用設計模式的問題,即回答了why的問題。
為什麼要封裝變化呢?因為變化對系統而言不好,注意,這裡是僅指對系統。變化對業務來說是好的,因為業務要與時俱進,要不斷的去適應市場的變化,這樣才能立於不敗之地。畢竟開發的系統是為業務服務的,那麼業務需要經常變化,因為需求的變化會引起的**修改量增加、測試量增加、重複的構建、上線而導致系統出現新bug、不穩定,所以我們為了儘量減少這些後果,所以要對變化進行封裝隔離,使變化僅在有限的範圍內產生影響,降低在變化到來時系統維護的成本。
首先,「找到變化」解決了「在**」使用設計模式的問題,即回答了where的問題。
根據對行業的了解和經驗,很容易在某個場景下找到哪些業務是可能會變化的,那麼我們就去封裝這個業務的變化。但是,如果我們涉及到的需求是個從來沒接觸過的行業,那麼我們怎麼去確定哪些業務場景是存在變化的?這時,因為我們對這個行業的經驗不夠多,因此我們可以將「唯一不變的就是變化」這句話做為準則,去懷疑一切業務場景都可能發生變化。但是,在去懷疑一切業務場景時也必須有個結束條件,這個條件一般就是時間。我們可以通過1年內、3年內或5年內,哪些業務是有可能發生變化的,去尋找變化,當確定了乙個時間範圍後,我們可以向有經驗的老鳥請教某某業務x年內可能發生變化嗎?這樣也顯的不會無的放矢。
其次,「封裝變化」解決了「為什麼」使用設計模式的問題,即回答了why的問題。
為什麼要封裝變化呢?因為變化對系統而言不好,注意,這裡是僅指對系統。變化對業務來說是好的,因為業務要與時俱進,要不斷的去適應市場的變化,這樣才能立於不敗之地。畢竟開發的系統是為業務服務的,那麼業務需要經常變化,因為需求的變化會引起的**修改量增加、測試量增加、重複的構建、上線而導致系統出現新bug、不穩定,所以我們為了儘量減少這些後果,所以要對變化進行封裝隔離,使變化僅在有限的範圍內產生影響,降低在變化到來時系統維護的成本。
《軟體設計精要與模式》讀書筆記(一) 設計之道
架構設計需要關注內容 1.程式組織 program organization 劃分功能模組,正確描述模組間關係,利用高內聚低耦合設計思想與原則對功能模組以元件或者包的形式進行封裝。根據面向介面設計原理將元件和包進行抽象,公開暴露服務介面。利用分層架構模式,通過引入分層模式,分離不同的功能模組,根據層...
領域驅動設計 軟體核心複雜應對之道 模式設計
模式設計篇,主要針對ddd的幾個重要概念進行了定義 主要分為entity value object service module 引言 房東出租房壞了,起訴作者,其實是另外乙個同名同姓的人。隱喻 如何區分乙個物件 entity 需要有乙個標識定義,在生命週期內是連續的,而且不隨自身熟悉的變化而變化。...
設計模式 工廠設計模式 一
工廠設計模式 就是當我們需要批量建立多種型別的物件時 需要用到,主要分為三種形式 1 靜態工廠,也叫簡單工廠模式,就是你傳乙個型別我建立對應的型別,spring中主要用到的就是這種模式 不多說,直接上 通用的產品介面,product 這個看需求,也可以定義為抽象類,根據你的物件之間的關係來定的 pa...