第35章(1 / 1)

小A:“組合模式比較簡單,也很容易學習,當你麵對一個樹形結構的時候,腦筋就該多轉一圈:是否可以在該結構中使用組合模式?”

大B:“我跟你講一種簡單的方法:定義一個公用的接口,讓組合對象和單個對象都去實現該接口。因此,如果麵對單個對象,則調用單個對象的方法;如果麵對組合對象,遞歸遍曆之,依次調用每個對象的方法;單個對象:相當於樹形結構中的葉節點,它不包含任何子對象。”

小A:“如何去實現組合模式呢?”

大B:“組合對象相當於樹形結構中的枝節點,它可以包含更小的枝對象,也可以包含葉對象。下麵的代碼是以抽象類定義,一般盡量用接口interface。”

//實價

//折扣價格

//增加部件方法

//刪除部件方法

//注重這裏,這裏就提供一種用於訪問組合體類的部件方法。

大B:“抽象類Equipment就是Component定義,代表著組合體類的對象們,Equipment中定義幾個共同的方法。”

//定義Disk實價為。

//定義了disk折扣價格是0.5對折。

小A:“什麼是Disk?”

大B:“Disk是組合體內的一個對象,或稱一個部件,這個部件是個單獨元素(Primitive)。還有一種可能是,一個部件也是一個組合體,就是說這個部件下麵還有‘兒子’,這是樹形結構中通常的情況,應該比較輕易理解。”

現在我們先要定義這個組合體:

//定義一個Vector用來存放‘兒子’

//注重這裏,這裏就提供用於訪問自己組合體內的部件方法。

//上麵Disk之所以沒有,是因為Disk是個單獨(Primitive)的元素。

(本章完)