什么是合成模式溯革?
合成(Composite)模式也稱組合模式贞绳,合成模式是一組對象的組合,這些對象可以是容器對象致稀,表現(xiàn)為組的概念冈闭。另外一些對象代表了單對象,或稱葉子對象抖单。
合成模式的意圖
保證客戶端調(diào)用單對象與組合對象的一致性萎攒。
合成模式的適用場景
如樹形菜單、文件及文件夾管理矛绘。
合成模式的優(yōu)點&缺點
優(yōu)點:高層模塊調(diào)用簡單耍休, 節(jié)點自由增加。
缺點:在使用組合模式時货矮,其葉子和樹枝的聲明都是實現(xiàn)類羊精,而不是接口,違反了依賴倒置原則囚玫。
合成模式類圖
合成模式特點
1)組對象允許包含單對象喧锦,也可以再包含其他的組對象(常見的錯誤是將組對象設(shè)計為只允許包含葉子對象)。????????????????????????????????????????????????????????????
2)組合對象和單對象定義共同的行為抓督。
結(jié)合這兩點裸违。就可以為組對象與單對象定義統(tǒng)一類型,并將該組對象建模為包含同等類型的集合本昏。
舉個栗子
下面以公司的組織形式為例。
阿里巴巴集團下面很多子公司枪汪,阿里媽媽涌穆、淘寶怔昨、天貓、阿里云等等宿稀,每個公司都有自己的部門和主要提供的服務(wù)趁舀,比如阿里巴巴主要提供B2B,淘寶主要是C2C祝沸,天貓主要是C2C矮烹,阿里云就是云計算服務(wù)了。每個公司都是獨立的子公司罩锐,所以也就有著自己的研發(fā)部門奉狈、人力資源部門、市場部門等涩惑。
公司抽象類
公司實現(xiàn)類
部門類
測試類
運行結(jié)果
小農(nóng)總結(jié)
組合模式解耦了客戶程序與復(fù)雜元素內(nèi)部結(jié)構(gòu)仁期,從而使客戶程序可以向處理簡單元素一樣處理復(fù)雜元素,想要創(chuàng)建層次結(jié)構(gòu)竭恬,組合模式是最理想的選擇跛蛋。