设计模式(第十七式:迭代器模式)
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版本加入的。
以上是关于设计模式(第十七式:迭代器模式)的主要内容,如果未能解决你的问题,请参考以下文章