設計模式入門篇

一、什么是設計模式

“每一個模式描述了一個在我們周圍不斷重復發生的問題,以及該問題的解決方案的核心。這樣,你就能一次又一次地使用該方案而不必做重復勞動”
——Christopher Alexander

盡管Alexander所指的是城市和建筑模式,但他的思想也同樣適用于面向對象設計模式。

受Alexander的啟發,Erich Gamma、Richard Helm、Ralph Johnson、Jshn Vlissides四人(人稱Gang Of Four,GOF)總結了23種常見的軟件開發設計模式

這23種設計模式并不描述新的或未經證實的設計,而是經過驗證,用于解決在特定環境下特定問題的解決方案。

1.1 設計模式四要素

  • 模式名稱:助記名,便于記憶和交流
  • 問題:交代特定的問題場景
  • 解決方案:確定了所包含的類和實例,它們的角色、協作方式以及職責分配
  • 效果:使用此解決方案之后所帶來的最終效果

1.2 為什么需要學習設計模式

  • 1.設計模式已成為軟件開發行業的“標準詞匯”
  • 2.個人技術提高的必備知識
  • 3.無須重復造輪子

二、設計模式的分類

GOF將設計模式分為23種設計模式,其中分為三大類

2.1 創建型模式

抽象了對象實例化的過程,用來幫助創建對象的實例

2.2 結構型模式

描述如何組合類和對象以獲取更大的結構

2.3 行為型模式

描述算法和對象間的職責分配

2.4 設計模式總覽

設計模式.png

上面標紅色五角星的為必須理解透徹的設計模式

三、UML類圖

為了更好的學習和理解設計模式,學習設計模式之前,需要掌握UML類圖

3.1 UML類圖

UML,全稱:統一建模語言(Unified Modeling Language)它是讓系統可視化的表現手段。

UML類圖主要用來表示類、接口、實例之間相互的靜態關系。本系列使用Java語言作為代碼演示,約定Java的字段屬性與UML的屬性(Attribute)對等,Java的方法與UML的操作(Operation)對等。

UML類圖表示

3.2 UML類圖幾種關系

UML中四種重要關系.png

1.依賴關系(dependency)

它描述一個對象在運行期會使用到另一個對象的關系。依賴是一種臨時性的關系,通常都是在運行期間產生,并隨著運行場景的不同,依賴關系也可能發生變化

比如人和船這兩個對象,如果場景是:開動輪船,那么船依賴于人。如果場景是:渡海,那么人依賴于船

依賴關系

2.泛化(generalization)

說明兩個對象之間的繼承關系。被繼承的類稱為父類,繼承的類稱為子類

繼承關系

3.實現(realization)

描述在一個類中描述,具體實現由另一個類在實現細節

實現關系

4.關聯(association)

描述了一個事物對象與另一個事物對象相關聯。其中關聯又具體分為:聚合關系、組合關系。

聚合關系:表達整體由部分構成。例如:一個班級由多個學生構成。

聚合關系

組合關系:表達整體擁有部,是一種強依賴的聚合關系。例如:人體是由頭部和眼睛組成.

組合關系
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 1.埋點是做什么的 2.如何進行埋點 3.埋點方案的設計 近期常被問到這個問題,我擔心我的答案會將一些天真爛漫的孩...
    lxg閱讀 2,029評論 0 1
  • 什么是設計模式,設計模式有什么用,解決了什么問題?設計模式(Design Pattern)是一套被反復使用、多數人...
    風吹過山閱讀 251評論 0 0
  • 創建型模式 工廠模式 工廠模式(Factory Pattern)是 Java 中最常用的設計模式之一。這種類型的設...
    隔墻送來秋千影閱讀 2,684評論 0 11
  • Swift1> Swift和OC的區別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴謹 對...
    cosWriter閱讀 11,136評論 1 32
  • 人格的獨立是不在概念或潮流里迷失自我,不隨波逐流,快慢節奏自己掌握。——Lady章 每逢“校招季”來臨,總是少不了...
    Lady章閱讀 296評論 1 1