JAVA-设计模式之迭代器模式
2013-08-14 14:30
351 查看
迭代器模式(Iterator):提供一种方法顺序访问聚集对象对象各个元素,而不暴露该对象的内部表示;
package caosc.javaModel.Iterator; //迭代器抽象类 public abstract class Iterator { public abstract Object first(); public abstract Object next(); public abstract boolean isDone(); public abstract Object currentItem(); } package caosc.javaModel.Iterator; //具体的迭代器类 public class ConcreteIterator extends Iterator { private ConcreteAggregate concreteAggregate; private int current = 0; public ConcreteIterator(ConcreteAggregate concreteAggregate) { this.concreteAggregate = concreteAggregate; } @Override public Object currentItem() { return concreteAggregate.getItems().get(current); } @Override public Object first() { return concreteAggregate.getItems().get(0); } @Override public boolean isDone() { return current >= concreteAggregate.getItems().size() ? (true) : (false); } @Override public Object next() { Object ret = null; current++; if (current < concreteAggregate.getItems().size()) { ret = concreteAggregate.getItems().get(current); } return ret; } } package caosc.javaModel.Iterator; //具体的迭代器类 public class ConcreteIteratorDesc extends Iterator { private ConcreteAggregate concreteAggregate; private int current = 0; public ConcreteIteratorDesc(ConcreteAggregate concreteAggregate) { this.concreteAggregate = concreteAggregate; current = concreteAggregate.getItems().size() - 1; } @Override public Object currentItem() { return concreteAggregate.getItems().get(current); } @Override public Object first() { return concreteAggregate.getItems().get( concreteAggregate.getItems().size() - 1); } @Override public boolean isDone() { return current < 0 ? (true) : (false); } @Override public Object next() { Object ret = null; current--; if (current >= 0) { ret = concreteAggregate.getItems().get(current); } return ret; } } package caosc.javaModel.Iterator; //聚集抽象类 public abstract class Aggregate { public abstract Iterator createIterator(); } package caosc.javaModel.Iterator; import java.util.ArrayList; import java.util.List; //具体聚集类 public class ConcreteAggregate extends Aggregate { private List<Object> items = new ArrayList<Object>(); @Override public Iterator createIterator() { return new ConcreteIterator(this); } public int count(){ return items.size(); } public List<Object> getItems() { return items; } public void setItems(List<Object> items) { this.items = items; } } package caosc.javaModel.Iterator; import java.util.LinkedList; import java.util.List; public class IteratorTest { public static void main(String[] args) { ConcreteAggregate c = new ConcreteAggregate(); List<Object> items = new LinkedList<Object>(); items.add("毕业"); items.add("买房"); items.add("卖车"); items.add("娶老婆"); items.add("娶老婆~~~"); c.setItems(items); Iterator it = new ConcreteIterator(c); while(!it.isDone()){ System.out.println(it.currentItem()); it.next(); } //多种遍历方式时候 Iterator itDesc = new ConcreteIteratorDesc(c);//倒叙 while(!itDesc.isDone()){ System.out.println(itDesc.currentItem()); itDesc.next(); } } } 何时使用:1、当需要对聚集有多种遍历方式时候,可以考虑使用迭代器模式;
相关文章推荐
- (四)Java设计模式--迭代器模式
- 设计模式(十六)----- 迭代器模式(Iterator)----(JAVA版)
- java设计模式之迭代器模式
- 浅谈JAVA设计模式之——迭代器模式(interator)
- java-设计模式(行为型)-【迭代器模式】
- Java设计模式之迭代器模式
- Java设计模式—解释器模式&迭代器模式简介
- Java设计模式之迭代器模式
- JAVA设计模式之迭代器模式
- (四)Java设计模式--迭代器模式
- (四)Java设计模式--迭代器模式
- Java设计模式-----Iterator迭代器模式
- Java设计模式五:迭代器模式(Iterator)
- Java设计模式之迭代器模式和组合模式
- 深入浅出Java设计模式之迭代器模式
- Java设计模式系列之迭代器模式
- Java设计模式——迭代器模式
- java设计模式_迭代器模式
- Java设计模式学习记录-迭代器模式
- 使用迭代器模式来进行Java的设计模式编程