<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # 遍歷聚合對象中的元素——迭代器模式(四) 4 使用內部類實現迭代器 在迭代器模式結構圖中,我們可以看到具體迭代器類和具體聚合類之間存在雙重關系,其中一個關系為關聯關系,在具體迭代器中需要維持一個對具體聚合對象的引用,該關聯關系的目的是訪問存儲在聚合對象中的數據,以便迭代器能夠對這些數據進行遍歷操作。 除了使用關聯關系外,為了能夠讓迭代器可以訪問到聚合對象中的數據,我們還可以將迭代器類設計為聚合類的內部類,JDK中的迭代器類就是通過這種方法來實現的,如下AbstractList類代碼片段所示: ``` package java.util; …… public abstract class AbstractList<E> extends AbstractCollection<E> implements List<E> { ...... private class Itr implements Iterator<E> { int cursor = 0; ...... } …… } ``` 我們可以通過類似的方法來設計第3節中的ProductList類,將ProductIterator類作為ProductList類的內部類,代碼如下所示: ``` //商品數據類:具體聚合類 class ProductList extends AbstractObjectList { public ProductList(List products) { super(products); } public AbstractIterator createIterator() { return new ProductIterator(); } //商品迭代器:具體迭代器,內部類實現 private class ProductIterator implements AbstractIterator { private int cursor1; private int cursor2; public ProductIterator() { cursor1 = 0; cursor2 = objects.size() -1; } public void next() { if(cursor1 < objects.size()) { cursor1++; } } public boolean isLast() { return (cursor1 == objects.size()); } public void previous() { if(cursor2 > -1) { cursor2--; } } public boolean isFirst() { return (cursor2 == -1); } public Object getNextItem() { return objects.get(cursor1); } public Object getPreviousItem() { return objects.get(cursor2); } } } ``` 無論使用哪種實現機制,客戶端代碼都是一樣的,也就是說客戶端無須關心具體迭代器對象的創建細節,只需通過調用工廠方法createIterator()即可得到一個可用的迭代器對象,這也是使用工廠方法模式的好處,通過工廠來封裝對象的創建過程,簡化了客戶端的調用。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看