设计模式:Iterator
针对问题
如果要遍历一个列表,可以为列表类型声明first/next/end等函数,并在其中封装具体的遍历逻辑。但是这么做有几个弊端:
1、如果需要以不同的实现方式遍历列表,那么可能需要声明多种遍历操作。
2、一个列表可能需要同时进行多个遍历。
解决的方法之一就是把遍历相关的操作提取到另一个类中,这就是Iterator模式。
介绍
提供一种方法顺序访问一个聚合对象中各个元素,而又不需暴露该对象的内部表示。
实现
Iterator模式的静态图如下:
图中:
Aggregate为被访问对象的基类,它声明一个获取Iterator的函数。
ConcreteAggregate返回的ConcreteIterator实例,在ConcreteIterator中实现具体的迭代操作。
Iterator模式的实现要注意以下几点:
1、Iterator可分为内部和外部两种,外部Iterator由客户控制每一步遍历,内部Iterator只需要提交一个待执行的操作,Iterator负责对每一个元素执行该操作。… Read the rest