設計模式 組合模式 組合模式使用

2021-10-05 18:49:49 字數 1825 閱讀 7699

目錄

組合模式概括

組合模式使用場景

定義:將物件組合成樹形結構以表示「部分-整體」的層次結構

作用:使客戶端對單個物件和組合物件保持一致的處理方式

使用場景:1.希望客戶端可以忽略組合物件與單個物件的差異時 2.處理乙個樹形結構時

優點:清楚的定義分層次的複雜物件,表示物件的全部或部分層次;讓客戶端忽略層次的差異,方便對整個層次結構進行控制;簡化客戶端**; 符合開閉原則;

缺點:限制型別時較為複雜; 使設計變得更加抽象

組合模式的典型應用場景就是對目錄的處理,目錄可以包含檔案和子資料夾,使用組合模式可以保證子檔案和子資料夾適用同一套抽象方法。此處以csdn學院課程為例,應用組合模式處理課程和課程目錄內容。

建立組合抽象類,抽象類包含了課程和課程目錄的抽象屬性和行為

public abstract class catalogcomponent 

public void remove(catalogcomponent catalogcomponent)

public string getname(catalogcomponent catalogcomponent)

public double getprice(catalogcomponent catalogcomponent)

public void print()

}

建立課程類,課程類包含名稱和**屬性,有獲取名稱、獲取**、列印的方法

public class course extends catalogcomponent 

@override

public string getname(catalogcomponent catalogcomponent)

@override

public double getprice(catalogcomponent catalogcomponent)

@override

public void print()

}

建立課程目錄類,課程目錄包含名稱、子課程、目錄級別屬性,具有新增課程、刪除課程、列印、獲取課程目錄名稱的方法

public class coursecatalog extends catalogcomponent 

@override

public void add(catalogcomponent catalogcomponent)

@override

public void remove(catalogcomponent catalogcomponent)

@override

public void print()

item.print();}}

@override

public string getname(catalogcomponent catalogcomponent)

}

建立測試方法,建立乙個一級目錄並新增子目錄和子課程,最後列印課程資訊。

public static void main(string args)
列印內容:

類圖:

組合模式 設計模式 組合模式

1.需求分析 假設要給乙個大公司做辦公管理系統,公司有人力資源部 財務部等,然後公司在其他城市還有分公司,分公司也有自己的人力資源部 財務部等,要求總公司 分公司以及各部分成樹狀結構管理。要完成這麼乙個系統,為了有乙個更好的設計,方便開發的展開,就需要了解乙個設計模式 組合模式。2.定義 將物件組合...

設計模式 組合模式

定義 將物件組合成樹形結構以表示 部分 整體 的層次結構。組合模式使得使用者對單個物件和組合物件的使用具有一致性。範例一 using system using system.collections.generic using system.text namespace 組合模式 範例二 公司管理系統...

設計模式 組合模式

1 menucomponent.h ifndef menucomponent h define menucomponent h include class menucomponent 組合物件基類component 建構函式 menucomponent std string strname m st...