組合模式 (composite pattern),又叫部分整體模式,是用於把一組相似的物件當作乙個單位的物件。組合模式依據樹形結構來組合物件,用來表示部分以及整體層次。這種型別的設計模式屬於結構型模式,它建立來物件組的樹形結構。
需求:展示乙個學校有多少個學校院系組成,乙個學院有多少個學院,乙個學院有多個系。
資訊工程專業
建立 organizationcomponent 類 該類帶有 organizationcomponent 物件
@data
@tostring
public
abstract
class
organizationcomponent
/** * 刪除
* @param component
*/protected
void
remove
(organizationcomponent component)
protected
abstract
void
print()
;public
organizationcomponent
(string name, string des)
}
建立university 學校類
public
class
university
extends
organizationcomponent
@override
protected
void
add(organizationcomponent component)
@override
protected
void
remove
(organizationcomponent component)
@override
protected
void
print()
);}}
建立學院類
public
class
college
extends
organizationcomponent
@override
protected
void
add(organizationcomponent component)
@override
protected
void
remove
(organizationcomponent component)
@override
protected
void
print()
);}}
建立專業類
map 介面 :頂級介面
public
inte***ce
map
abstractmap 抽象類實現來map介面 :介面實現,擴充套件
public
abstract
class
abstractmap
implements
mappublic
void
putall
(map<
?extendsk,
?extends
v> m)
}
hashmap :方法實現
public
class
hashmap
extends
abstractmap
implements
map, cloneable, serializable
public
void
putall
(map<
?extendsk,
?extends
v> m)
}
hashmap中的內部類 node :他其實就是我們組合模式中所講述的leaf物件,它沒有再組合任何的子節點,提供的也只有get方法和set方法
static
class
node
implements
map.entry
public
final k getkey()
public
final v getvalue()
public
final string tostring()
public
final
inthashcode()
public
final v setvalue
(v newvalue)
public
final
boolean
equals
(object o)
return
false;}
}
github demo位址 : ~~~傳送門~~~ 深入理解設計模式(21) 組合模式
定義 將物件以樹形結構組織起來,以達成 部分 整體 的層次結構,使得客戶端對單個物件和組合物件的使用具有一致性。動機 motivation 客戶 過多地依賴於物件容器複雜的內部實現結構,物件容器內部實現結構 而非抽象介面 的變化將引起客戶 的頻繁變化,帶來了 的維護性 擴充套件性等弊端。如何將 客戶...
23種設計模式 10 組合模式
一 常規實現 不安全 產品類 public abstract class product public string name 每個產品都可以工作 public abstract void work 每個產品都可以往裡面再新增子產品 至於有些產品不能再新增子產品,這裡我們一會會詳細說,大家先記住這一...
深入理解23種設計模式 23 責任鏈模式
責任鏈模式 chain of responsibility pattern 為請求者建立乙個接受者物件的鏈,這種模式對請求對傳送者和請求者進行解耦。責任鏈模式通常每個接收者都包含對另乙個接收者都引用,如果乙個物件不能處理該請求,那麼他就會把相同的請求傳給下乙個接收者解耦,以此類推。這種型別的設計模式...