天天看点

【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)

继续阅读