迭代器模式

      迭代器(Iterator):提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。

类图:

代码:

publicinterface Iterator {

    Object first();

    boolean next();

    Object isDone();

    int currentItem();

}

publicabstractclass Aggregate {

    public List<String> messages=new ArrayList<String>();

    publicintindex=0;

    publicabstract Iterator CreateIterator();

}

publicclass ConcreteIterator implements Iterator {

    protected Aggregate aggregate;

    public ConcreteIterator(Aggregate aggregate){

       this.aggregate=aggregate;

    }

    publicint currentItem() {

       returnthis.aggregate.index;

    }

    public Object first() {

       if(this.aggregate.messages.size()>0){

           returnthis.aggregate.messages.get(0);

       }else{

           returnnull;        

       }

    }

    public Object isDone() {

       if(this.aggregate.index<this.aggregate.messages.size()){

           returnthis.aggregate.messages.get(this.aggregate.index++);

       }else{

           returnnull;        

       }

    }

    publicboolean next() {

       if(this.aggregate.index<this.aggregate.messages.size()){

           returntrue;

       }else{

           returnfalse;

       }

    }

}

publicclass ConcreteAggregate extends Aggregate {

    public Iterator CreateIterator() {

       returnnew ConcreteIterator(this);

    }

}

publicstaticvoid main(String[] args) {

       Aggregate aggregate=new ConcreteAggregate();

       List<String> msg=new ArrayList<String>();

       msg.add("abc");

       msg.add("def");

       msg.add("fhi");

       msg.add("jkl");

       aggregate.messages=msg;

      

       Iterator iterator=aggregate.CreateIterator();

       System.out.println(iterator.first());

       while(iterator.next()){

           System.out.println();

           System.out.println(iterator.currentItem()+"_"+iterator.isDone());

       }

      

    }

小结:

      此模式非常常用,JavaC#语言本身已经实现了迭代器模式(Foreach)。我们只需要了解他就可以了!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值