透明方式 與 安全方式

透明方式 與 安全方式

透明方式 與 安全方式

透明方式 與 安全方式

為什麼Leaf類別也有Add和Remove,樹葉不是不可以再長分枝嗎?

這種方式叫透明方式,在Component中宣告所有來管理子物件的

方法,其中包括Add、Remove等。這樣實現Component介面的所有

子類別都具備了Add和Remove。這樣做的好處是葉節點和枝節點對

外界沒有區別,它們具備完全一致的行為介面。但問題也很明顯,

因為Leaf類別本身不具備Add和Remove方法的功能,所以實現它是

沒有意義的。

安全方式,在Component介面中不去宣告Add和Remove方法,

子類別的Leaf就不用去實現它,而是在Composite宣告所有用來管理

子類別物件的方法,這樣就不會出現剛才提到的問題,不過由於不夠

透明,所以樹葉和樹枝類別不具有相同介面。用戶端調用須作相對應的

判斷。