标签:nts rac 使用 行为型模式 定义 支持 bool 数据结构 管理
迭代器模式(Iterator Pattern) :提供一种方法来訪问聚合对象,而不用暴露这个对象的内部表示,其别名为游标(Cursor)。迭代器模式是一种对象行为型模式。
2、模式结构
迭代器模式包括例如以下角色:
Iterator: 抽象迭代器
ConcreteIterator: 详细迭代器
Aggregate: 抽象聚合类
ConcreteAggregate: 详细聚合类
3、模式分析
聚合是一个管理和组织数据对象的数据结构。
聚合对象主要拥有两个职责:一是存储内部数据。二是遍历内部数据。
存储数据是聚合对象最主要的职责。
将遍历聚合对象中数据的行为提取出来。封装到一个迭代器中。通过专门的迭代器来遍历聚合对象的内部数据,这就是迭代器模式的本质。
迭代器模式是“单一职责原则”的完美体现。
模式分析
自己定义迭代器
MyIterator——抽象迭代器
MyCollection——抽象聚合类
NewCollection——详细聚合类
NewIterator——详细迭代器
Client
public class ConcreteIterator implements Iterator { private ConcreteAggregate objects; public ConcreteIterator(ConcreteAggregate objects) { this.objects=objects; } public void first() { ...... } public void next() { ...... } public boolean hasNext() { ...... } public Object currentItem() { ...... } } public class ConcreteAggregate implements Aggregate { ...... public Iterator createIterator() { return new ConcreteIterator(this); } ...... }
4、模式优缺点
迭代器模式的长处
它支持以不同的方式遍历一个聚合对象。
迭代器简化了聚合类。
在同一个聚合上能够有多个遍历。
在迭代器模式中,添加新的聚合类和迭代器类都非常方便,无须改动原有代码,满足“开闭原则”的要求。
迭代器模式的缺点
因为迭代器模式将存储数据和遍历数据的职责分离,添加新的聚合类须要相应添加新的迭代器类,类的个数成对添加,这在一定程度上添加了系统的复杂性。
5、模式适用环境
在下面情况下能够使用迭代器模式:
訪问一个聚合对象的内容而无须暴露它的内部表示。
须要为聚合对象提供多种遍历方式。
为遍历不同的聚合结构提供一个统一的接口。
标签:nts rac 使用 行为型模式 定义 支持 bool 数据结构 管理
原文地址:http://www.cnblogs.com/blfbuaa/p/7293932.html