在《週期》中作者這樣描述過模式:“人類必須生活在現實世界中。我們尋找模式和規律,能夠讓我們活得更加舒服,也獲利更多。”
為什麼會有設計模式?
你曾經多少次有過這種感覺—你已經解決過了一個問題,但就是不能確切知道是在什麼地方或怎麼解決的?如果你能記起以前問題的細節和怎麼解決它的,你就可以複用以前的經驗而不需要重新發現它。然而,我們並沒有很好記錄下可供他人使用的軟體設計經驗。設計模式的目標是將設計經驗以人們能夠有效利用的形式記錄下來。來複用設計經驗,很多問題不必要再從頭做起。
設計模式的定義
設計模式的起初還是來源於建築業。設計模式的定義:“每一個模式描述了一個在我們周圍不斷重複發生的問題, 以及該問題的解決方案的核心。這樣,你就能一次又一次地使用該方案而不必做重複勞動”(這個定義是Christopher Alexander 說的(Christopher Alexander,1936年10月4日生於奧地利維也納)是加州大學伯克利分校的終身教授和承包商,同時也是建築師。)儘管Alexander所指的是城市和建築模式,但同樣也適用於面向對向設計模式。最近理解同樣也可以用於其他行業的模式,如投資尋找相應的模式和規律進而找到人生獲勝的公式。
設計模式的元素
設計模式有四個基本的元素模式名稱、問題、解決方案、效果。
1.模式名稱:一個助記名,用一兩個詞來描述問題、解決方案和效果,便於同行間溝通交流。
2.問題:描述問題相關背景和問題的上下文,問題產生的前因後果,有時候描述設計模式的先決條件。
3.解決方案:問題解決方案,是設計的組成部分,描述了物件間的各自的關係和職責和協作方式。描述怎樣通過一般的元素組合來解決問題的。
4.效果:描述模式應用的效果和使用模式的權衡問題。決策的過程也很重要。這個包含了兩個重要的點,模式應用後的效果和選用模式如何去權衡的。、
設計模式的學習和運用
模式就像是一個模板,可以應用於多個場合來形成一種經驗。不管是在建築業,還是IT業,還是其他行業,模式都可以一次又一次去複用,尤其是歷經過考驗的成功的一些模式。在學習設計模式的過程中,一方面是學習軟體行業已有的設計模式,另一方面學習如何記錄軟體設計或者其他方面的遇到的問題形成自己一個模式庫。
我們努力想要看透人生,方法是識別模式,進而找到人生獲勝的公式。