迭代器模式(Iterator)

2021-09-01 15:30:45 字數 2063 閱讀 4173

迭代器模式(iterator),提供一種方法順序訪問乙個聚合物件中的各種元素,而又不暴露該物件的內部表示。

當你需要訪問乙個聚合物件,而且不管這些物件是什麼都需要遍歷的時候,就應該考慮使用迭代器模式。另外,當需要對聚集有多種方式遍歷時,可以考慮去使用迭代器模式。迭代器模式為遍歷不同的聚集結構提供如開始、下乙個、是否結束、當前哪一項等統一的介面。

迭代器模式uml類圖:

迭代器模式實現:

using system;

using system.collections.generic;

using system.linq;

using system.text;

namespace iterator

/*aggregate聚集抽象類*/

abstract class aggregate

class concreteiterator : iterator

// 第乙個物件

public override object first()

// 得到聚集的下一物件

public override object next()

return ret;

}// 是否到結尾

public override bool isdone()

// 返回當前聚集物件

public override object currentitem()

}class concreteaggregate : aggregate

// 返回聚集總個數

public int count

}// 宣告乙個索引器

public object this[int index]

set }}

}

客戶端:

using system;

using system.collections.generic;

using system.linq;

using system.text;

namespace iterator

請買車票!",i.currentitem());

i.next();

}console.read();}}

}

執行結果:

.net的迭代器實現:

其實.net框架已經準備好了迭代器介面,只需要實現介面就行了

ieumerator 支援對非泛型集合的簡單迭代。

using system;

using system.collections.generic;

using system.linq;

using system.text;

namespace iterator.net

bool movenext();

void reset();

}public inte***ce ienumerable

}

客戶端:

using system;

using system.collections.generic;

using system.linq;

using system.text;

namespace iterator.net

請買車票!",item);

}console.read();}}

}

執行結果:

迭代器模式總結:

迭代器模式(iterator)就是分離了聚合物件的遍歷行為,抽象出乙個迭代器來負責這樣既可以做到不暴露集合的內部結構,又可讓外部**透明的訪問集合內部資料。

迭代器模式(Iterator)

迭代器模式 iterator 提供一種方法順序訪問乙個聚合物件中的各種元素,而又不暴露該物件的內部表示。當你需要訪問乙個聚合物件,而且不管這些物件是什麼都需要遍歷的時候,就應該考慮使用迭代器模式。另外,當需要對聚集有多種方式遍歷時,可以考慮去使用迭代器模式。迭代器模式為遍歷不同的聚集結構提供如開始 ...

迭代器模式(Iterator)

1.目的 當需要遍歷 單種方式或多種方式 遍歷乙個組合物件時,使用遍歷模式。該模式類似與將容器的介面進行封裝,不對外直接暴露容器的介面的做法類似。2.ifndef iterator h define iterator h include include using namespace std cla...

Iterator 迭代器模式

現在有乙個集合。其內部元素的儲存方式可能比較複雜。為了讓使用者在不用關心其內部表示的情況下對其元素進行訪問,於是建立了乙個迭代器用於對集合的各個元素進行訪問。為了給使用者提供乙個更友好且強大的介面類,於是對迭代器以組合的形式進行封裝,得到乙個管理類。使用者直接操作該管理類即可得到指定元素,或通過管理...