應用中存在多種集合,各自內部儲存結構不同。若客戶代碼直接依賴具體結構遍歷,更換集合類型時需大幅修改。
提供一致方式存取集合元素,無需暴露集合內部表示。
ICollection (資料儲存) 與 Iterator (遍歷行為)。Iterator 實作。
圖示關係:Client → ICollection → ConcreteCollection;ICollection.GetIterator() → Iterator → ConcreteIterator。
將以代碼實作此結構,再引入 C# 2.0 yield return、C# 3.0 Lambda 簡化遍歷邏輯。