黑马程序员: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