什麼是迭代模式
iterator模式也叫迭代模式,是行為模式之一,它把對容器中包含的內部物件的訪問委讓給外部類,使用iterator按順序進行遍歷訪問的設計模式。
不使用迭代模式的應用
在應用iterator模式之前,首先應該明白iterator模式用來解決什麼問題。或者說,如果不使用iterator模式,會存在什麼問題。
由容器自己實現順序遍歷。直接在容器類裡直接新增順序遍歷方法
讓呼叫者自己實現遍歷。直接暴露資料細節給外部
不使用迭代模式的缺點
容器類承擔了太多功能:一方面需要提供新增刪除等本身應有的功能;一方面還需要提供遍歷訪問功能。
往往容器在實現遍歷的過程中,需要儲存遍歷狀態,當跟元素的新增刪除等功能夾雜在一起,很容易引起混亂和程式執行錯誤等。
迭代模式的角色和職責
iterator(迭代器介面):該介面必須定義實現迭代功能的最小定義方法集,比如提供hasnext()和next()方法。
concreteiterator(迭代器實現類): 比如bookshelfiterator,迭代器介面iterator的實現類。可以根據具體情況加以實現。
aggregate(容器介面):定義基本功能以及提供類似iterator iterator()的方法。
concreteaggregate(容器實現類): 比如bookshelf,容器介面的實現類。必須實現iterator iterator()方法。
迭代模式的優點
最重要的乙個因素,引用iterator可以使遍歷和實現分離開來。
容器類承擔了太多功能:一方面需要提供新增刪除等本身應有的功能;一方面還需要提供遍歷訪問功能。
往容器在實現遍歷的過程中,需要儲存遍歷狀態,當跟元素的新增刪除等功能夾雜在一起,很容易引起混亂和程式執行錯誤等。
package com.xiaoxu.design.iterator;
/*** 迭代器介面
*/public inte***ce iterator
package com.xiaoxu.design.iterator;
/** * 容器介面
*/public inte***ce aggregate
package com.xiaoxu.design.iterator;
/** * 書架
*/public class bookshelf implements aggregate
@override
public iterator iterator()
public book getbookat(int index)
books[last] = book;
last ++;
}public int getlength()
}
package com.xiaoxu.design.iterator;
/** * 書架迭代器實現類
*/public class bookshelfiterator implements iterator
@override
public object next()
@override
public boolean hasnext()
return false;}}
package com.xiaoxu.design.iterator;
public class book
public string getname()
@override
public string tostring() ';}}
驗證:
設計模式 迭代器模式
迭代器模式是屬於物件行為性的模式。首先是定義 提供一種方法順序訪問乙個聚合物件中各個元素,而又不暴露物件的表示方法。迭代器的結構圖 適用性 1 訪問乙個聚合物件的內容而無需暴露它的內部表示 2 支援聚合物件的多種遍歷 3 為遍歷不同的聚合結構提供乙個統一的介面 支援多型迭代 協作 concretei...
設計模式 迭代器模式
iterator,提供一種方法順序訪問乙個聚合物件中各個元素,而又不暴露該物件的內部表示。迭代器模式就是分離了集合物件的遍歷行為,抽象出乙個迭代器類來負責,這樣既可以做到不暴露集合的內部結構,又可讓外部 透明地訪問集合內部的資料。iterator迭代器抽象類 迭代器抽象類 abstract clas...
設計模式 迭代器模式
迭代器模式在我們日常程式設計中使用非常頻繁,像list map 陣列等都會用到迭代器模式。迭代器模式屬於行為型模式,它用於順序訪問集合物件的元素,不需要知道集合物件的底層表示。在迭代器模式結構圖中包含如下幾個角色 它支援以不同的方式遍歷乙個聚合物件。迭代器簡化了聚合類。在同乙個聚合上可以有多個遍歷。...