《java與模式》 12 合成模式

2021-08-10 19:27:45 字數 669 閱讀 2421

合成模式屬於物件的結構模式;

使客戶端將單純元素與復合元素同等看待;

角色:抽象構件角色;樹枝角色;樹葉角色;

其中樹枝角色可以有子節點,樹葉角色不可以有子節點,如果根節點是樹葉角色那麼就變成了只有乙個節點的樹;

合成模式根據所實現的介面分為兩種形式:安全式、透明式;

合成模式可以不提供父物件的管理方法,但是必須在合適的地方提供子物件的管理方法,如add(),remove(),getchild()等;

透明式:

在 component 中宣告管理子類物件的方法,如add(),remove(),getchild()等,好處是所有的構件都有相同的介面,在客戶端看來樹葉類與樹枝類沒有區別可以同等對待所有物件這就是透明的合成模式,缺點是不夠安全,因為樹葉類與樹枝類本質上是有區別的,樹葉類物件不可能有下乙個層次的物件,add(),remove(),getchild()編譯器不會報錯,而在執行時才會報錯;

安全式:

在composite裡宣告所有用來管理子類的方法,這是安全的做法,因為樹葉型別的物件根本沒有管理子型別的方法,這個選擇的缺點是不透明,因為樹葉類和樹枝類將有不同的介面;

這兩種形式各有優缺點,根據實際情況使用;

Java設計模式之12 命令模式

命令模式 1 建立乙個命令介面 package commandpattern public inte ce command 2 建立乙個接收命令並執行的 類 package commandpattern public class receiver 3 建立乙個 請求者,發出命令請求 package ...

java與模式 裝飾模式

第四個設計模式 裝飾模式 裝飾模式是對物件功能增強時,平時使用繼承的一種替代方案 一 uml示意圖 二 組成部分 1.抽象構件 原始的功能介面 2.具體構件 具體的原始功能類 3.裝飾角色 持有具體構件類的物件,以便執行原有功能 4.具體裝飾 具體擴充套件的功能在這裡 三 例子 使用裝飾模式來演示乙...

Java設計模式之12 命令模式(2)

我們通過乙個遊戲的業務邏輯來演示命令模式。1 建立命令介面 package commandpattern2 public inte ce command 2 建立命令的執行者 package commandpattern2 具體執行類 相當於 receiver public class tetris...