定義建立迭代器的標準介面:
using System;
using System.Collections.Generic;
using System.Text;
namespace Pattern.Iterator
{
///
/// 集合介面(Aggregate)
///
public interface ICollection
{
///
/// 建立迭代器物件
///
/// IIterator
IIterator CreateIterator();
}
}
實作集合介面,內部使用 List 管理元素:
using System;
using System.Collections.Generic;
using System.Text;
namespace Pattern.Iterator
{
///
/// 集合(ConcreteAggregate)
///
public class Collection : ICollection
{
private List<MessageModel> list = new List<MessageModel>();
///
/// 建立迭代器物件
///
/// Iterator 實例
public IIterator CreateIterator()
{
return new Iterator(this);
}
///
/// 集合內的物件總數
///
public int Count
{
get { return list.Count; }
}
///
/// 索引器
///
/// index
/// MessageModel
public MessageModel this[int index]
{
get { return list[index]; }
set { list.Add(value); }
}
}
}
CreateIterator() 返回針對此集合的迭代器實例。List<MessageModel> 管理元素,封裝儲存細節。this[int index] 讓迭代器存取元素。Count 讓迭代器判斷遍歷邊界。| 模式角色 | 本例類別 | 說明 |
|---|---|---|
| Aggregate | ICollection | 抽象集合介面 |
| ConcreteAggregate | Collection | 具體集合,管理元素與建立迭代器 |
| Iterator | IIterator | 抽象迭代器介面(下一篇) |
| ConcreteIterator | Iterator | 具體迭代器,實作遍歷邏輯(下一篇) |