透明方式 與 安全方式
透明方式 與 安全方式
透明方式 與 安全方式
透明方式 與 安全方式
為什麼Leaf類別也有Add和Remove,樹葉不是不可以再長分枝嗎?
這種方式叫透明方式,在Component中宣告所有來管理子物件的
方法,其中包括Add、Remove等。這樣實現Component介面的所有
子類別都具備了Add和Remove。這樣做的好處是葉節點和枝節點對
外界沒有區別,它們具備完全一致的行為介面。但問題也很明顯,
因為Leaf類別本身不具備Add和Remove方法的功能,所以實現它是
沒有意義的。
安全方式,在Component介面中不去宣告Add和Remove方法,
子類別的Leaf就不用去實現它,而是在Composite宣告所有用來管理
子類別物件的方法,這樣就不會出現剛才提到的問題,不過由於不夠
透明,所以樹葉和樹枝類別不具有相同介面。用戶端調用須作相對應的
判斷。