第34章(1 / 1)

大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:“嘿嘿!不錯喔!”

(本章完)