设计模式(第十七式:迭代器模式)

Posted ben-mario

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式(第十七式:迭代器模式)相关的知识,希望对你有一定的参考价值。

概念:
  迭代器模式:Provide a way to access the elements of an aggregarte object sequentiaally with exposing its underlying representation. 提供一种访问容器对象内每个元素的一种方式,并且不暴露对象的一些内部细节。

实现:
  迭代器接口定义

public interface Iterator 
    Object next();
    Boolean hasNext();


  容器接口定义

public interface Box 
    void add(Object object);
    Iterator createIterator();


  迭代器实现

public class BoxIterator implements Iterator 
    private BookBox bookBox;
    private Integer size;
    private Integer index;

    public BoxIterator(BookBox bookBox)
        this.bookBox = bookBox;
        this.size = bookBox.size();
        this.index = 0;
    

    @Override
    public Object next() 
        if(index<size)
            return bookBox.getElement(index++);
        
        return null;
    

    @Override
    public Boolean hasNext() 
        return index<size;
    


  容器实现

public class BookBox implements Box 
    private Vector vector = new Vector();

    @Override
    public void add(Object object) 
        this.vector.add(object);
    

    public Object getElement(Integer index)
        if(index<vector.size())
            return vector.get(index);
        
        return null;
    
    public Integer size()
            return vector.size();
    

    @Override
    public Iterator createIterator() 
        return new BoxIterator(this);
    


测试及结果:

@Test
public void iteratorTest() 
    BookBox bookBox = new BookBox();
    bookBox.add("历史书");
    bookBox.add("政治书");
    bookBox.add("语文书");
    bookBox.add("数学书");
    bookBox.add("英语书");

    Iterator iterator = bookBox.createIterator();

    while (iterator.hasNext()) 
        System.out.println(iterator.next());
    


  历史书
  政治书
  语文书
  数学书
  英语书

分析:
  1.简化了对容器的遍历操作,直接提供了遍历接口
  2.最常用的就是jdk的集合迭代器,这个迭代器接口是在1.2版本加入的。

以上是关于设计模式(第十七式:迭代器模式)的主要内容,如果未能解决你的问题,请参考以下文章

(十七)迭代器模式详解(foreach的精髓)

设计模式迭代器模式 ( 简介 | 适用场景 | 优缺点 | 代码示例 )

设计模式之迭代器模式与命令模式详解和应用

迭代器模式(Iterator Pattern)

设计模式-迭代器模式

Java设计模式之迭代器模式