iterator pattern
迭代器模式(iterator pattern):提供一種方法來訪問聚合物件,而不用暴露這個物件的內部表示,其別名為游標(cursor)。
迭代器模式是一種物件行為型模式。
聚合物件是來儲存一系列資料。
聚合物件擁有兩個職責:一是儲存資料;二是遍歷資料。從依賴性來看,前者是聚合物件的基本職責;而後者既是可變化的,又是可分離的。
因此,可以將遍歷資料的行為從聚合物件中分離出來,封裝在乙個被稱之為「迭代器」的物件中,由迭代器來提供遍歷聚合物件內部資料的行為,這將簡化聚合物件的設計,更符合「單一職責原則」的要求。
在迭代器模式中,提供了乙個外部的迭代器來對聚合物件進行訪問和遍歷,迭代器定義了乙個訪問該聚合元素的介面,並且可以跟蹤當前遍歷的元素,了解哪些元素已經遍歷過而哪些沒有。
迭代器的引入,將使得對乙個複雜聚合物件的操作變得簡單。
迭代器模式結構圖:
優點:
缺點:
// 抽象迭代器
inte***ce
abstractiterator
// 抽象聚合類
abstract
class
abstractobjectlist
public
void
addobject
(object obj)
public
void
removeobject
(object obj)
list
getlist()
//宣告建立迭代器物件的抽象工廠方法
public
abstract abstractiterator createiterator()
;}// 具體聚合類
class
productlist
extends
abstractobjectlist
//實現建立迭代器物件的具體工廠方法
public abstractiterator createiterator()
// 具體迭代器
private
class
productiterator
implements
abstractiterator
public object next()
return o;
}public
boolean
islast()
public object previous()
public
boolean
isfirst()
public object getnextitem()
public object getpreviousitem()
}}
設計模式 十七 迭代器模式
比如集合 迭代器將儲存資料和遍歷資料隔離開來,但是每新增加乙個集合就需要新增乙個迭代器型別。日常使用時很少會自定義給乙個迭代器,都是復用jdk的迭代器。課程public class course public string getname 存放課程 存放課程 遍歷課程 public inte ce ...
大話設計模式筆記(十七) 迭代器模式
提供一種方法順序訪問乙個聚合物件中各個元素,而又不暴露該物件的內部表示。聚集抽象類 created by callmedevil on 2019 8 17.public abstract class aggregate 迭代器抽象類 created by callmedevil on 2019 8 ...
設計模式觀後(c 還原之十七 迭代器模式)
迭代器模式 現在已經基本感覺沒意思了,感覺每個23鐘模式圍繞著前面的6個原則設計 只是增加了示例見識,還不見得全記得住。估計要用的時候才會迅速找到 不說了,要加速23鐘模式 快點進入模式混合搭配,才能深刻理解 作者把管理專案資訊做了乙個迭代器 先抽象基類 class projectiterator ...