码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2019-07-04 17:28:41      阅读:114      评论:0      收藏:0      [点我收藏+]

标签:数学   override   OLE   模式   第十七   style   迭代器模式   reg   简化   

概念:
  迭代器模式: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版本加入的。

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

标签:数学   override   OLE   模式   第十七   style   迭代器模式   reg   简化   

原文地址:https://www.cnblogs.com/ben-mario/p/11133536.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!