需求:
(1)需要某种树形结构,可以容纳菜单、子菜单和菜单项
(2)需要确定能够在每个菜单的各个项之间游走,而且至少要像现在用迭代器一样方便。
(3)需要能够更有弹性地在菜单项之间游走。比方说:可能只需要遍历甜点菜单,或者可以遍历餐厅的整个菜单(包括甜点菜单在内)
组合模型:允许你将对象组合成树形结构来表现“整体/部分”层次结构。组合能让客户以一致的方式处理个别对象以及对象组合。
作用:这个模式能够创建一个树形结构,在同一个结构中处理嵌套菜单和菜单项组。
Tips:
①将MenuItem(叶节点)看作成没有孩子的节点。
②Menu里既能添加Menu,也能添加MenuItem。
③MenuComponent里包含MenuItem和Menu的所有方法。
④MenuItem和Menu只实现需要的方法,其他方法均抛出UnsupportedOperationException()