Java设计模式(16)行为型:迭代器模式
2016-12-27 18:24
519 查看
(一)模式概述
迭代器模式提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示。提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示。访问一个聚合对象的内容而无需暴露它的内部表示支持对聚合对象的多种遍历,为遍历不同的聚合结构提供一个统一的接口。
(二)Demo
迭代器模式可以直接使用原生JDK中提供的方法:java.util.Iterator;,如:import java.util.ArrayList; import java.util.Iterator; /** * 原生的迭代器用法 */ public class UtilIteratorTest { public static void main(String[] args) { // TODO 自动生成的方法存根 ArrayList<String> array = new ArrayList<String>(); array.add("a"); array.add("b"); array.add("c"); array.add("d"); Iterator<String> it = array.iterator(); while(it.hasNext()){ System.out.println(it.next()); } } }
也可自定义MyIterator实现:
Iterator:自定义迭代器接口
public interface Iterator { // 前移 public Object previous(); // 后移 public Object next(); // 是否还有下个元素 public boolean hasNext(); // 取得第一个元素 public Object first(); }
Collection:定义一个用来处理集合接口
public interface Collection {
public Iterator iterator();
/* 取得集合元素 */
public Object get(int i);
/* 取得集合大小 */
public int size();
}
MyIterator:实现迭代器接口
public class MyIterator implements Iterator { private Collection collection; private int pos = -1; public MyIterator(Collection collection){ this.collection = collection; } @Override public Object previous() { if(pos > 0){ pos--; } return collection.get(pos); } @Override public Object next() { if(pos<collection.size()-1){ pos++; } return collection.get(pos); } @Override public boolean hasNext() { if(pos<collection.size()-1){ return true; }else{ return false; } } @Override public Object first() { pos = 0; return collection.get(pos); } }
MyCollection:实现该集合接口
public class MyCollection implements Collection { public String[] string = {}; public MyCollection(String[] array){ string = array; } @Override public Iterator iterator() { return new MyIterator(this); } @Override public Object get(int i) { return string[i]; } @Override public int size() { return string.length; } }执行过程:
String[] array = { "A", "B", "C", "D", "E" }; Collection collection = new MyCollection(array); Iterator it = collection.iterator(); while (it.hasNext()) { System.out.println(it.next()); }执行结果:
A B C D E
相关文章推荐
- java设计模式16_迭代器模式
- java设计模式(行为型)之迭代器模式
- java-设计模式(行为型)-【迭代器模式】
- Java设计模式(行为型)之-迭代器模式
- 详解java设计模式(四)之迭代器模式(行为型)
- Java与设计模式(二十六)行为型--迭代器模式
- Java设计模式(16)之迭代器模式
- Java设计模式之行为型模式(迭代器模式)
- JAVA设计模式(21):行为型-迭代器模式(Iterator)
- 设计模式(16)-行为型-迭代器模式(Iterator)
- Java设计模式16:常用设计模式之观察者模式(行为型模式)
- 极速理解设计模式系列:16.迭代器模式(Iterator Pattern)
- 设计模式笔记 17. Iterator 迭代器模式(行为型模式)
- 设计模式笔记(18)---迭代器模式(行为型)
- java 设计模式 学习笔记(16) 单例模式
- 设计模式笔记(18)---迭代器模式(行为型)
- Java设计模式-----Iterator迭代器模式
- Java设计模式之迭代器模式
- Java设计模式之迭代器模式
- Java设计模式之迭代器模式