美文网首页Java 杂谈javaJava
java设计模式-迭代器模式(Interator)

java设计模式-迭代器模式(Interator)

作者: yiqiquhuxi | 来源:发表于2019-08-08 13:46 被阅读40次

    迭代器模式,属于行为型模式,提供一种方法顺序访问聚合对象的各个元素,而不暴漏该对象的内部表示。

    这句话理解起来很容易,在java中,可以理解为遍历集合对象,集合里面的对象是什么我不去理会,反正我给你遍历出来就行了。有人说这不就是java里面的Interator遍历?或者是for()循环遍历集合吗?
    是的,JDK中已经把集合和迭代器整合的非常到位了。所以我们可以直接使用迭代器Interator,不过呢,迭代器本身就是一种设计模式,这一节,学习目的大于了使用的目的。

    UML图:

    迭代器模型图

    aggregate:表示聚合(也可以叫做容器)的接口类,拥有获取迭代器的方法(也可以不需要接口,直接使用实现)。
    concreteAggregate:聚合接口的具体实现类,拥有获取迭代器的方法。
    Interator:迭代器接口类,(当然也可以不要,直接使用迭代器实现类)。
    concreteInterator:迭代器实现类,拥有需要迭代的聚合对象(红色部分)

    这里面为什么需要把聚合和迭代器做成接口,不做借口其实照样可以实现,不过,我们这里是为了更好地扩展,以后我们也可以添加多个聚合实现类和迭代器实现类。也符合我们设计模式的开闭原则,单一职责原则。


    话不多说,直接上代码:

    迭代器接口类:

    迭代器接口

    迭代器实现类(拥有需要迭代的聚合对象):

    迭代器实现类

    需要迭代的容器接口类:(拥有迭代器)

    迭代器接口

    迭代器实现类:(拥有迭代器)

    迭代器实现类

    测试:

    测试类

    代码其实很简单,
    Aggregate聚合对象,拥有自身的基本方法(添加方法,删除方法等等),
    interator对象,专门负责Aggregate的遍历工作。


    JDK中,几乎所有的集合对象都拥有迭代器。
    List(ArrayList,LinkedList等等)
    Set(TreeSet,HashSet等等)
    Map(HashMap,ConcurrentHashMap,LinkedHashMap等等)

    相关文章

      网友评论

        本文标题:java设计模式-迭代器模式(Interator)

        本文链接:https://www.haomeiwen.com/subject/yucxjctx.html