zoukankan      html  css  js  c++  java
  • 大战设计模式【12】—— 迭代器模式

    迭代器模式(Iterator)

    设计模式使用的例子https://github.com/LinkinStars/DesignPatternsAllExample

    一、定义

    提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示。

    二、结构

    Iterator(抽象迭代器):定义了访问和遍历元素的接口,声明了用于遍历数据元素的方法。

    ConcreteIterator(具体迭代器):它实现了抽象迭代器接口,完成对聚合对象的遍历。

    Aggregate(抽象聚合类):用于存储和管理元素对象,声明一个CreateIterator()方法用于创建一个迭代器对象,充当抽象迭代器工厂角色。

    ConcreteAggregate(具体聚合类):实现了在抽象聚合类中声明的CreateIterator()方法,返回一个对应的具体迭代器ConcreteIterator实例。

    三、优点

    支持以不同方式遍历一个聚合对象,在同一个聚合对象上可以定义多种便利方式。

    增加新的聚合类和迭代器类都很方便,无须修改原有代码,符合开闭原则。

    四、缺点

    增加新的聚合类需要对应增加新的迭代器类

    五、应用场景

    访问一个聚合对象的内容而无须暴露它的内部表示。

    需要为一个聚合对象提供多种遍历方式。

    六、个人总结

    1、如果你已经了解java中的迭代器,那么迭代器设计模式应该很容易理解,简单的说,java利用这样的设计模式设计出了它的迭代器

    对于我们熟知的那些集合都可以使用迭代器去遍历

    2、例子中我们自己创建了迭代器的接口,这是我们学习所需要了解内部机制所用的

    在实际中我们通常使用java.util.Iterator

    参考博客:http://www.cnblogs.com/edisonchou/p/7442138.html
  • 相关阅读:
    UVA11825 Hackers' Crackdown
    UVA 11346 Probability
    Codeforces 12 D Ball
    bzoj 4766: 文艺计算姬
    Codeforces 757 F Team Rocket Rises Again
    [HAOI2011] problem C
    Atcoder 3857 Median Sum
    bzoj4399 魔法少女LJJ
    bzoj2638 黑白染色
    bzoj4197 [Noi2015]寿司晚宴
  • 原文地址:https://www.cnblogs.com/linkstar/p/7747226.html
Copyright © 2011-2022 走看看