天天看點

八 設計模式七大原則之合成複用法則1 基本介紹2 說明2.1 繼承2.2 依賴(使用)2.3 聚合2.4 組合3 設計原則核心思想

文章目錄

  • 1 基本介紹
  • 2 說明
  • 2.1 繼承
  • 2.2 依賴(使用)
  • 2.3 聚合
  • 2.4 組合
  • 3 設計原則核心思想

1 基本介紹

合成複用原則總結起來就一句話:

盡量使用合成/聚合的方式,而不是使用繼承

2 說明

當我們在設計程式的時候,首先考慮的是合成,聚合,組合的方式(這些類會在下一節的UML類圖有介紹),而不是繼承,除非沒有辦法才會用繼承.我們用案例來說明一下:

假如說有兩個類,A類和B類,A類中有一個函數operation1,如果在B類中想用A類的operation1函數,我們會怎麼辦?很多人會想到繼承,讓B類繼承A類.那我們就用類圖來看一下:

2.1 繼承

八 設計模式七大原則之合成複用法則1 基本介紹2 說明2.1 繼承2.2 依賴(使用)2.3 聚合2.4 組合3 設計原則核心思想

如果我們隻是讓B去使用A,B繼承A會使耦合性增強.是以我們不推薦使用繼承我們可以使用以下方式.

2.2 依賴(使用)

八 設計模式七大原則之合成複用法則1 基本介紹2 說明2.1 繼承2.2 依賴(使用)2.3 聚合2.4 組合3 設計原則核心思想

我們可以使用依賴關系,也就是在B類中需要用到A類的函數形參傳入A類執行個體.

2.3 聚合

八 設計模式七大原則之合成複用法則1 基本介紹2 說明2.1 繼承2.2 依賴(使用)2.3 聚合2.4 組合3 設計原則核心思想

或者是在B中添加一個A類屬性,然後通過setter給該屬性指派.該關系稱為聚合.

2.4 組合

八 設計模式七大原則之合成複用法則1 基本介紹2 說明2.1 繼承2.2 依賴(使用)2.3 聚合2.4 組合3 設計原則核心思想

也可以在B中添加一個A類屬性使用new 建立A類執行個體.該對象稱為組合.這關系和聚合很相似.但組合在建立B類對象的時候也建立了A類對象.

3 設計原則核心思想

  1. 找出應用中可能需要變化之處,把它們獨立出來,不要和那些不需要變化的代碼混在一起。
  2. 針對接口程式設計,而不是針對實作程式設計。
  3. 為了互動對象之間的松耦合設計而努力

繼續閱讀