91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

詳解Java設計模式——迭代器模式

發布時間:2020-09-02 06:51:25 來源:腳本之家 閱讀:157 作者:No_Game_No_Life_ 欄目:編程語言

迭代子模式

顧名思義,迭代器模式就是順序訪問聚集中的對象,一般來說,集合中非常常見,如果對集合類比較熟悉的話,理解本模式會十分輕松。這句話包含兩層意思:一是需要遍歷的對象,即聚集對象,二是迭代器對象,用于對聚集對象進行遍歷訪問。我們看下關系圖:

詳解Java設計模式——迭代器模式

這個思路和我們常用的一模一樣,MyCollection中定義了集合的一些操作,MyIterator中定義了一系列迭代操作,且持有Collection實例,我們來看看實現代碼:
兩個接口:

public interface Collection { 
 
 public Iterator iterator(); 
 
 /*取得集合元素*/ 
 public Object get(int i); 
 
 /*取得集合大小*/ 
 public int size(); 
} 
public interface Iterator { 
 //前移 
 public Object previous(); 
 
 //后移 
 public Object next(); 
 public boolean hasNext(); 
 
 //取得第一個元素 
 public Object first(); 
} 

兩個實現:

public class MyCollection implements Collection { 
 
 public String string[] = {"A","B","C","D","E"}; 
 @Override 
 public Iterator iterator() { 
 return new MyIterator(this); 
 } 
 
 @Override 
 public Object get(int i) { 
 return string[i]; 
 } 
 
 @Override 
 public int size() { 
 return string.length; 
 } 
} 
public class MyIterator implements Iterator { 
 
 private Collection collection; 
 private int pos = -1; 
 
 public MyIterator(Collection collection){ 
 this.collection = collection; 
 } 
 
 @Override 
 public Object previous() { 
 if(pos > 0){ 
 pos--; 
 } 
 return collection.get(pos); 
 } 
 
 @Override 
 public Object next() { 
 if(pos<collection.size()-1){ 
 pos++; 
 } 
 return collection.get(pos); 
 } 
 
 @Override 
 public boolean hasNext() { 
 if(pos<collection.size()-1){ 
 return true; 
 }else{ 
 return false; 
 } 
 } 
 
 @Override 
 public Object first() { 
 pos = 0; 
 return collection.get(pos); 
 } 
 
} 

測試類:

public class Test { 
 
 public static void main(String[] args) { 
 Collection collection = new MyCollection(); 
 Iterator it = collection.iterator(); 
 
 while(it.hasNext()){ 
 System.out.println(it.next()); 
 } 
 } 
} 

此處我們貌似模擬了一個集合類的過程,感覺是不是很爽?其實JDK中各個類也都是這些基本的東西,加一些設計模式,再加一些優化放到一起的,只要我們把這些東西學會了,掌握好了,我們也可以寫出自己的集合類,甚至框架!

介紹
意圖:提供一種方法順序訪問一個聚合對象中各個元素, 而又無須暴露該對象的內部表示。

主要解決:不同的方式來遍歷整個整合對象。

何時使用:遍歷一個聚合對象。

如何解決:把在元素之間游走的責任交給迭代器,而不是聚合對象。

關鍵代碼:定義接口:hasNext, next。

應用實例:JAVA 中的 iterator。

優點:

1、它支持以不同的方式遍歷一個聚合對象。

2、迭代器簡化了聚合類。

3、在同一個聚合上可以有多個遍歷。

4、在迭代器模式中,增加新的聚合類和迭代器類都很方便,無須修改原有代碼。

缺點:由于迭代器模式將存儲數據和遍歷數據的職責分離,增加新的聚合類需要對應增加新的迭代器類,類的個數成對增加,這在一定程度上增加了系統的復雜性。

使用場景:

1、訪問一個聚合對象的內容而無須暴露它的內部表示。

2、需要為聚合對象提供多種遍歷方式。

3、為遍歷不同的聚合結構提供一個統一的接口。

注意事項:迭代器模式就是分離了集合對象的遍歷行為,抽象出一個迭代器類來負責,這樣既可以做到不暴露集合的內部結構,又可讓外部代碼透明地訪問集合內部的數據。

以上所述是小編給大家介紹的Java設計模式——迭代器模式詳解整合,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對億速云網站的支持!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

湘潭市| 炉霍县| 太仆寺旗| 河间市| 柘荣县| 久治县| 芦溪县| 吕梁市| 武清区| 会泽县| 宜丰县| 探索| 昆明市| 桃江县| 陈巴尔虎旗| 庆阳市| 津市市| 芒康县| 宜春市| 塔城市| 海林市| 商城县| 边坝县| 苍溪县| 林芝县| 隆安县| 蒙山县| 隆昌县| 汝州市| 咸宁市| 玉环县| 深州市| 广西| 崇左市| 新密市| 荣成市| 顺昌县| 镇赉县| 河西区| 水城县| 桐庐县|