标签:数学 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