激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - 詳解Java設計模式——迭代器模式

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

2019-06-22 17:04No_Game_No_Life_ Java教程

這篇文章主要介紹了Java設計模式——迭代器模式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

迭代子模式

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

詳解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設計模式——迭代器模式詳解整合,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對服務器之家網站的支持!

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 49vvv| 国产一区二区在线免费播放 | 最新中文在线视频 | 欧美精品一区二区免费 | 国产成人综合在线观看 | 国产午夜精品一区二区三区在线观看 | 国产91精品久久久 | 欧美激情精品久久久久久黑人 | 亚洲一区在线视频 | 国产乱xxxx| 久草在线视频精品 | 久久免费视频3 | 欧美日本一区二区 | 日韩在线视频在线 | 欧美特级一级毛片 | 久久精品亚洲国产奇米99 | 91精品国产一区二区三区四区在线 | 成人mm视频在线观看 | 看片一区二区三区 | 久久精品视频7 | 欧洲成人免费 | 国产一区国产二区在线观看 | 日韩视频一区二区在线观看 | 男女羞羞的视频 | 黄色一级电影网 | 一区二区三区日韩精品 | 欧美日韩在线播放一区 | 成人国产高清 | 欧美精品一区二区久久 | 欧美激情猛片xxxⅹ大3 | 亚洲成人激情av | 欧美囗交 | 午夜丰满少妇高清毛片1000部 | 国产女厕一区二区三区在线视 | 久久久久久久亚洲视频 | 国产一区二区三区撒尿在线 | 亚洲成人免费视频在线 | 久久久久性 | 999久久国产 | 久久久噜噜噜久久熟有声小说 | 欧美成年人在线视频 |