組合模式
HashMap集合里,放Set集合,這就是很典型的組合模式,兩個(gè)類都實(shí)現(xiàn)了Map接口,Map接口中定義了 增 刪 改 查,實(shí)現(xiàn)類都是集合,很適合
適用情況舉例
學(xué)生管理系統(tǒng):
學(xué)校(大集合):增刪改查院系、班級(jí)、學(xué)生、教師
院系(中集合):增刪改查班級(jí)、學(xué)生、教師
班級(jí)(小集合):增刪改查學(xué)生、教師
學(xué)生、教師(元素)
代碼實(shí)現(xiàn):(并沒有代碼)
集合接口:定義增刪改查方法
集合抽象類:實(shí)現(xiàn)集合接口,增加必要屬性
實(shí)現(xiàn)類:學(xué)校、院系、班級(jí)
組合模式的注意事項(xiàng)和細(xì)節(jié)
- 簡(jiǎn)化客戶端操作??蛻舳酥恍枰鎸?duì)一致的對(duì)象而不用考慮整體部分或者節(jié)點(diǎn)葉子 的問題。
- 具有較強(qiáng)的擴(kuò)展性。當(dāng)我們要更改組合對(duì)象時(shí),我們只需要調(diào)整內(nèi)部的層次關(guān)系, 客戶端不用做出任何改動(dòng).
- 方便創(chuàng)建出復(fù)雜的層次結(jié)構(gòu)。客戶端不用理會(huì)組合里面的組成細(xì)節(jié),容易添加節(jié)點(diǎn) 或者葉子從而創(chuàng)建出復(fù)雜的樹形結(jié)構(gòu)
- 需要遍歷組織機(jī)構(gòu),或者處理的對(duì)象具有樹形結(jié)構(gòu)時(shí), 非常適合使用組合模式.
- 要求較高的抽象性,如果節(jié)點(diǎn)和葉子有很多差異性的話,比如很多方法和屬性 都不一樣,不適合使用組合模式