组合模式原理:
餐厅菜单聚类结构现状:
餐带是一维的时候,方便维护,当变成二维时维护难度增大。例如Diner Menum存在子菜单sub Menum。
困难:subMenum与原来的Menum数据结构不一致,二维遍历存在问题。
数据结构抽象:
1.需要用树形结构,节点是菜单或子菜单,叶子是菜单项
2.需要能够在各个菜单项之间游走,遍历
3.要能够有弹性的在菜单项之间游走
组合模式:
将对象聚合成树形结构来表现“整体/部分”的层次结构。
组合模式能让客户以一致的方式来处理个别对象以及对象组合。
也就是我们可以忽略对象组合与个体对象之间的差别
示例项目类图结构:
菜单项跟子菜单想都有迭代器,菜单项迭代器返回空,菜单项返回迭代数据(多叉树遍历思想)。
组合模式的原理和意义:
1.优化迭代器模式迭代存在的困难,迭代时只需要一种方式处理,很好处理树形结构的遍历问题。
2.把整体和部分的区别通过超类抹掉,使子类存储结构和细节不需要超类暴漏。
3.返回迭代器/空迭代器的方式,屏蔽子类迭代方法(数组/集合迭代方法),数据类型与超类解耦合。