大B:“下麵是組合模式的結構圖。”
大B:“組合模式為組合中的對象聲明接口,在適當的情況下,實現所有類共有接口的默認行為。聲明一個接口用於訪問和管理組合模式的子部件。”
publicabstractvoidAdd(componentc);//通常都用Add和Remove方法來提供增加或移出樹葉或樹枝的功能
Leaf在組合中表示葉節點對象,葉節點沒有子節點
//由於葉節點沒有再增加分枝和樹葉,所以Add和Remove方法實現
//它沒有意義,但這樣可以消除葉節點和枝節點對象在抽象層次的區別
}//它們具備完全一致的接口
//葉節點的具體方法,此處是顯示其名稱和級別
Composite定義有枝節點行為,用來存儲子部件,在Component接口中實現與子部件有關的操作,比如增加Add和刪除。
{//顯示枝節點名稱,並對其下級進行遍曆
客戶端代碼,能通過Component接口操作組合部件的對象
(newLeaf(“LeafA”));//生成樹根root,根上長出兩葉
//根部又長出兩頁LeafC和LeafD,可惜LeafD沒有長牢,被風吹走了
root,Display(1);//顯示大樹的樣子
顯示結果:
大B:“現在你能用代碼以組合模式,試寫一下我給我女朋友買生日禮物。”
小A:“OK”
代碼:
voidPay;
(“我買了”+mname+“!hoho~”);
};
};
//20歲生日,那時的MM還很單純~
(“lalala~20歲生日來咯——”);
//22歲生日,MM變得狡詐了~
(“heiheihei~22歲生日來咯——”);
//打包,打包!我要把所有喜歡的禮物打包成“一套”~
//24歲生日……天哪!
(“hiahiahia~24歲生日來咯——”);
//先逛商場一層~買化妝品!
//打包,打包!
//然後來到二層,看中了一套衣服~
//因為隻能買“一件”,所以“狡詐”的MM再次打包……
//我包,我包,我包包包!
大B:“嘿嘿!不錯喔!”
(本章完)