名称:迭代器模式
说说:
动机:
适用性:
参与者:
结果:提供一个方法顺序访问一个聚合对象的各个元素,而又不需要暴露该对象的内部表示
类图:
说明:
demo c#:
namespace Iterator {
class Program {
static void Main(string[] args) {
concreteAggregate a = new concreteAggregate();
a[0] = "h";
a[1] = "e";
a[2] = "l";
a[3] = "l";
a[4] = "o";
a[5] = "!";
iIterator i = a.createIterator();
while (i.hasNext()) {
var obj = i.next();
Console.Write(obj.ToString());
}
Console.Read();
}
}
// main code
interface iIterator {
object first();
object next();
object currentItem();
bool hasNext();
}
interface iAggregate {
iIterator createIterator();
}
class concreteIterator : iIterator {
private concreteAggregate aggregate;
private int current = 0;
public concreteIterator(concreteAggregate aggregate) {
this.aggregate = aggregate;
}
public object first() {
return aggregate[0];
}
public object next() {
var obj = aggregate[current];
current++;
return obj;
}
public object currentItem() {
return aggregate[current];
}
public bool hasNext() {
return current >= aggregate.Count ? false : true;
}
}
class concreteAggregate : iAggregate {
private IList<object> items = new List<object>();
public iIterator createIterator() {
return new concreteIterator(this);
}
// 返回聚集总个数
public int Count {
get { return items.Count; }
}
// 声明一个索引器
public object this[int index] {
get { return items[index]; }
set { items.Insert(index, value); }
}
}
}