Laughing

 

迭代器模式 Java

  意图:

       提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部表示
UML图:
 

先写一个Iterator 的接口:(这里最好集合对象也实现一个接口,这里指hall,偷懒了又)

package fu;
public interface Iterator
{
     boolean hasNext();
     Object next();
}

再写一个容器:(山)

package fu;
public class Hall
{
    tree[] t;
    private int index=0;
    public Hall(int a)
   {
         t=new tree[a];
   }
   public void add(tree th)
   {
        t[index++]=th;
   }
   public Iterator ci()
  {
        return new treeIterator(this);
   }
}

往山里放些树:

package fu;
public class tree
{
     public String name;
    tree(String n)
    {
        name=n;
    }
}

加一个树的迭代器:

package fu;
public class treeIterator implements Iterator
{
      private int last=0;
      private Hall hall;
      public treeIterator(Hall h)
     {
          hall=h;
      }
      public boolean hasNext()
     {
          if(last<hall.t.length) return true;
         return false;
     }
    public tree next()
   {
        return hall.t[last++];
    }
}

测试:

package fu;
public class test
{
public static void main(String[] args)
{
Hall h=new Hall(4);tree t=null;
h.add(new tree("a"));
h.add(new tree("b"));
h.add(new tree("c"));
h.add(new tree("d"));
Iterator i=h.ci();
while(i.hasNext())
{

     t=(tree)i.next();
     System.out.println(t.name);
}
}
}

posted on 2011-11-11 09:52  巨富一生  阅读(374)  评论(0)    收藏  举报

导航