黑马程序员:Java培训、Android培训、iOS培训、.Net培训
黑马程序员--迭代器模式
一、定义
提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示。
二、迭代器模式类图
1)Iterator定义访问和遍历元素的接口,既可以自己定义一个Iterator,也可以使用java.util.Iterator。
2)ConcreteIterator实现接口,并对给聚合遍历时跟踪当前位置。
3)Aggregate定义创建相应迭代器对象的接口,将客户代码从集合对象的实现解耦。
4)ConcreteAggregate持有一个对象集合,实现createIterator()并返回集合的迭代器。
三、适用性
1、访问一个聚合对象的内容而无需暴露它的内部表示。
2、支持对聚合对象的多种遍历。
3、为遍历不同的聚合结构提供一个统一的接口(即,制裁支持多态迭代)。
四、使用迭代器模式需要考虑的问题
1、谁控制迭代
外部迭代器:由客户控制迭代。
内部迭代器:由迭代器控制迭代。
2、谁定义遍历算法
既可以在迭代器中定义遍历算法,也可以在聚合中定义遍历算法。
3、迭代器健壮程度
4、附加的迭代器操作
迭代器的最小接口由frist(), neixt(), isDone()和currentItem()组成。
5、多态迭代器
6、用于复合对象的迭代器
7、空迭代器
NullIterator是一个退化的迭代器,有助于处理边界条件。
写在模式之前:http://www.cnblogs.com/oo-lab/articles/4593399.html
策略模式:http://www.cnblogs.com/oo-lab/articles/4593407.html
迭代器模式:http://www.cnblogs.com/oo-lab/articles/4593416.html
观察者模式:http://www.cnblogs.com/oo-lab/articles/4593418.html
命令模式:http://www.cnblogs.com/oo-lab/articles/4593425.html
模板方法模式:http://www.cnblogs.com/oo-lab/articles/4593428.html
状态模式:http://www.cnblogs.com/oo-lab/articles/4593429.html
单件模式:http://www.cnblogs.com/oo-lab/articles/4593432.html
工厂方法模式:http://www.cnblogs.com/oo-lab/articles/4593435.html
抽象工厂模式:http://www.cnblogs.com/oo-lab/articles/4593440.html
生成器模式:http://www.cnblogs.com/oo-lab/articles/4593444.html