對象的結(jié)構(gòu)模式,又稱“部分-整體”模式。
合成模式將對象組織到樹結(jié)構(gòu)中,可以用來描述整體與部分的關(guān)系。合成模式可以使客戶端將單純元素與復(fù)合元素同等對待。
適用場合:
1. 需要描述對象的部分和整體的等級結(jié)構(gòu)。
2. 需要客戶端忽略掉個體構(gòu)件和組合構(gòu)件的區(qū)別。客戶端必須平等對待所有的構(gòu)件,包括個體構(gòu)件和組合構(gòu)件。
優(yōu)點:
1. 合成模式可以很容易地增加新種類的構(gòu)件。
2. 使用合成模式可以使客戶端變得很容易設(shè)計,因為客戶端不需要知道構(gòu)件是樹葉構(gòu)件還是樹枝構(gòu)件。
缺點:
1. 使用合成模式后,控制樹枝構(gòu)件的類型就不太容易。
2. 用繼承的方法來增加新的行為很困難。
透明式的合成模式:
1. com.cleversoft.designpatterns.transparentcomposite.Graphics.java:













2. com.cleversoft.designpatterns.transparentcomposite.Circle.java:






























3. com.cleversoft.designpatterns.transparentcomposite.Line.java:






























4. com.cleversoft.designpatterns.transparentcomposite.Rectangle.java:






























5. com.cleversoft.designpatterns.transparentcomposite.Picture.java:






































6. com.cleversoft.designpatterns.transparentcomposite.Client.java:
























安全式的合成模式:
1. com.cleversoft.designpatterns.safecomposite.Graphics.java:







2. com.cleversoft.designpatterns.safecomposite.Circle.java:












3. com.cleversoft.designpatterns.safecomposite.Line.java:












4. com.cleversoft.designpatterns.safecomposite.Rectangle.java:












5. com.cleversoft.designpatterns.safecomposite.Picture.java:







































6. com.cleversoft.designpatterns.safecomposite.Client.java:
























參考資料:
1. 《Java與模式》
2. http://terrylee.cnblogs.com/archive/2006/03/11/347919.html
|
|
歡迎大家訪問我的個人網(wǎng)站 萌萌的IT人