head first Design Pattern Iterator & Composite
迭代器模式:提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示。将遍历聚合的工作封装进一个对象中,依赖聚合提供遍历。
Java5 all the collections has add travel method, so you don't need require Iterator to travel all the elements.使用for(MenuItem item: items)
组合模式(Composite Pattern):允许你将对象组合成树形结构来表现“整体/部分”层次结构。组合能让客户以一致的方式处理个别对象以及对象组合。例如一个菜单有几个菜单项和一个子菜单组成,而其中的子菜单又由若干菜单项组合而成,形成一棵树。如果菜单项是有次序的,遍历菜单项增加或删除节点时,就要注意次序问题。
通常应该做到一个类,一个责任。但是组合模式不仅管理菜单层次结构,而且还要执行菜单的操作,以单一责任设计原则换取透明性(transparency),从而在客户的角度来看组合和叶节点是一样的。
Java5 all the collections has add travel method, so you don't need require Iterator to travel all the elements.使用for(MenuItem item: items)
组合模式(Composite Pattern):允许你将对象组合成树形结构来表现“整体/部分”层次结构。组合能让客户以一致的方式处理个别对象以及对象组合。例如一个菜单有几个菜单项和一个子菜单组成,而其中的子菜单又由若干菜单项组合而成,形成一棵树。如果菜单项是有次序的,遍历菜单项增加或删除节点时,就要注意次序问题。
通常应该做到一个类,一个责任。但是组合模式不仅管理菜单层次结构,而且还要执行菜单的操作,以单一责任设计原则换取透明性(transparency),从而在客户的角度来看组合和叶节点是一样的。