天天看點

【23種設計模式】之 組合模式(Composite Pattern)

需求:

(1)需要某種樹形結構,可以容納菜單、子菜單和菜單項

(2)需要确定能夠在每個菜單的各個項之間遊走,而且至少要像現在用疊代器一樣友善。

(3)需要能夠更有彈性地在菜單項之間遊走。比方說:可能隻需要周遊甜點菜單,或者可以周遊餐廳的整個菜單(包括甜點菜單在内)

組合模型:允許你将對象組合成樹形結構來表現“整體/部分”層次結構。組合能讓客戶以一緻的方式處理個别對象以及對象組合。

作用:這個模式能夠建立一個樹形結構,在同一個結構中處理嵌套菜單和菜單項組。

【23種設計模式】之 組合模式(Composite Pattern)

Tips:

①将MenuItem(葉節點)看作成沒有孩子的節點。

②Menu裡既能添加Menu,也能添加MenuItem。

③MenuComponent裡包含MenuItem和Menu的所有方法。

④MenuItem和Menu隻實作需要的方法,其他方法均抛出UnsupportedOperationException()

【23種設計模式】之 組合模式(Composite Pattern)
【23種設計模式】之 組合模式(Composite Pattern)

繼續閱讀