久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

設(shè)計(jì)模式--迭代器模式(Iterator)

 遙遠(yuǎn)的橋zz 2011-04-06

 設(shè)計(jì)模式--迭代器模式(Iterator) 收藏
迭代器模式
概述
    給定一個(gè)語(yǔ)言,,定義它的文法的一種表示,,并定義一個(gè)解釋器,這個(gè)解釋器使用該表示來(lái)解釋語(yǔ)言中的句子,。適用性    1.訪問(wèn)一個(gè)聚合對(duì)象的內(nèi)容而無(wú)需暴露它的內(nèi)部表示,。

    2.支持對(duì)聚合對(duì)象的多種遍歷。

    3.為遍歷不同的聚合結(jié)構(gòu)提供一個(gè)統(tǒng)一的接口(即,支持多態(tài)迭代),。參與者    1.Iterator
      迭代器定義訪問(wèn)和遍歷元素的接口,。

    2.ConcreteIterator
      具體迭代器實(shí)現(xiàn)迭代器接口。
      對(duì)該聚合遍歷時(shí)跟蹤當(dāng)前位置,。

    3.Aggregate
      聚合定義創(chuàng)建相應(yīng)迭代器對(duì)象的接口,。

    4.ConcreteAggregate
      具體聚合實(shí)現(xiàn)創(chuàng)建相應(yīng)迭代器的接口,該操作返回ConcreteIterator的一個(gè)適當(dāng)?shù)膶?shí)例.Example
  public interface Iterator {

    Object next();
   
    void first();
   
    void last();
   
    boolean hasNext();
}
ConcreteIterator
public class IteratorImpl implements Iterator {

    private List list;
   
    private int index;
   
    public IteratorImpl(List list) {
        index = 0;
        this.list = list;
    }
   
    public void first() {
        index = 0;
    }

    public void last() {
        index = list.getSize();
    }

    public Object next() {
        Object obj = list.get(index);
        index++;
        return obj;
    }

    public boolean hasNext() {
        return index < list.getSize();
    }
}
Aggregate
public interface List {

    Iterator iterator();
   
    Object get(int index);
   
    int getSize();
   
    void add(Object obj);
}
ConcreteAggregate
public class ListImpl implements List {

    private Object[] list;
   
    private int index;
   
    private int size;
   
    public ListImpl() {
        index = 0;
        size = 0;
        list = new Object[100];
    }
   
    public Iterator iterator() {
        return new IteratorImpl(this);
    }
   
    public Object get(int index) {
        return list[index];
    }
   
    public int getSize() {
        return this.size;
    }
   
    public void add(Object obj) {
        list[index++] = obj;
        size++;
    }
}
Test
public class Test {

    public static void main(String[] args) {
        List list = new ListImpl();
        list.add("a");
        list.add("b");
        list.add("c");
        //第一種迭代方式
        Iterator it = list.iterator();
        while (it.hasNext()) {
            System.out.println(it.next());
        }
       
        System.out.println("=====");
        //第二種迭代方式
        for (int i = 0; i < list.getSize(); i++) {
            System.out.println(list.get(i));
        }
    }
}
result
a
b
c
=====
a
b
c
 發(fā)表于 @ 2009年05月16日 21:14:00 | 評(píng)論( 0 ) | 編輯| 舉報(bào)| 收藏

本文來(lái)自CSDN博客,,轉(zhuǎn)載請(qǐng)標(biāo)明出處:http://blog.csdn.net/terryzero/archive/2009/05/16/4193524.aspx

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多