迭代器模式

canca17年前 (2007-03-26)设计模式298
//迭代器模式
//CopyRight(C) CAnca software Office.2006
//Created by CAnca.
import java.util.*;
public class IteratorMode{
 public static void main(String[] args){
  AbstractCollection collection = new concreteCollection();
  collection.add("Canca");
  collection.add("Jacky");
  collection.add("MIMI");
  collection.add("tTing");
  collection.add("Honghong");
  Iterator iterator = collection.createIterator();
  System.out.println("iterator.first() - " + iterator.first());
  System.out.println("iterator.last() - " + iterator.last());
  System.out.println();
  
  Object item = iterator.first();
  while(item != null){
   System.out.println(item);
   item = iterator.next();
  }
  
 } 
}
abstract class Iterator{
 abstract Object first();
 abstract Object next();
 abstract Object last();
 abstract Object currentItem();
 abstract boolean isDone();
}
abstract class AbstractCollection{
 protected ArrayList items;
 public AbstractCollection(){
  items = new ArrayList();
 }
 abstract Iterator createIterator(); 
 abstract void add(Object item);
 abstract int size();
}
class concreteCollection extends AbstractCollection{
 public Iterator createIterator(){
  return new concreteIterator(this);
 }
 
 public void add(Object item){
  items.add(item);
 }
 
 public int size(){
  return items.size();
 }
}
class concreteIterator extends Iterator{
 AbstractCollection collection = null;
 private int current = -1;
 public concreteIterator(AbstractCollection collection){
  this.collection = collection;
 }
 
 public Object first(){
  if(!collection.items.isEmpty()){
   current = 0;
   return collection.items.get(0);
  }else{
   return null;
  }
 }
 
 public Object next(){
  if(current < collection.items.size() - 1){
   return collection.items.get(++current);
  }else{
   return null;
  }
 }
 
 public Object last(){
  if(!collection.items.isEmpty()){
   current = collection.items.size() - 1; 
   return collection.items.get(current);
  }else{
   return null;
  }
 }
 
 public boolean isDone(){
  if(current >= collection.items.size() - 1){
   return true;
  }else{
   return false;
  }
 }
 
 public Object currentItem(){
  if(!collection.items.isEmpty()){
   if(isDone() || current == -1)
    return null;
   return collection.items.get(current);
  }else{
   return null;
  }
 }
}


相关文章

抽象工厂模式

//抽象工厂模式//Copyright CAnca Software office//Created by CAnca.2006public class AbstractFactory{ p...

单例模式

//CopyRight CAnca Software Office. 2006//Created by CAnca. import java.util.*; public class singleto...

工厂方法模式

//工厂方法模式:现实例子//CopyRight(C)CAnca Software Office. 2006//Created by CAnca. import java.util.*; public...

建造者模式

//建造者模式//CopyRight(C)CAnca Software Office.//Created by CAnca. import java.util.*; public class Buil...

原型模式

//原型模式//CopyRight(C) CAnca Software Office.2006//Created by CAnca. public class PrototypeMode{ ...

代理模式

//代理模式--真实例子//CopyRight(C)CAnca Software Office.2006//Created by CAnca.   public class ProxyMod...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。