;Item Implements IAbstractIterator.First
current = 0
Return TryCast(collection(current), Item)
End Function
Public Function [Next]() As Item Implements IAbstractIterator.[Next]
current += m_step
If Not IsDone Then
Return TryCast(collection(current), Item)
Else
Return Nothing
End If
End Function
'' Properties
Public Property [Step]() As Integer
Get
Return m_step
End Get
Set(ByVal value As Integer)
m_step = value
End Set
End Property
Public ReadOnly Property CurrentItem() As Item Implements IAbstractIterator.CurrentItem
Get
Return TryCast(collection(current), Item)
End Get
End Property
Public ReadOnly Property IsDone() As Boolean Implements IAbstractIterator.IsDone
Get
Return current >= collection.Count
End Get
End Property
End Class
Iterator Pattern模式的几个要点:
1、迭代抽象:访问一个聚合对象的内容而无需暴露它的内部信息。
2、迭代多态:为遍历不同的集合结构提供一个统一的接口,从而支持同样的算法在不同的集合结构上进行操作。
3、迭代器健壮性考虑:遍历的同时更改迭代器所在的集合结构,会导致问题。
我的理解
封装集合对象的内部结构和遍历集合的算法,支持集合和算法的变化。
参考资料
《C#面向对象设计模式纵横谈系列课程(18)》 李建中老师