迭代器模式是非常常用的设计模式。这种模式用于顺序访问集合对象的元素,不需要知道集合对象的底层表示。迭代器模式属于行为型模式。
总结:遍历(聚合)集合数据。
场景: 1、访问一个聚合对象的内容而无须暴露它的内部表示。 2、需要为聚合对象提供多种遍历方式。 3、为遍历不同的聚合结构提供一个统一的接口。
优点: 它支持以不同的方式遍历一个聚合对象
下面示例 演示 迭代器模式
namespace 迭代器模式
{
internal class Program
{
static void Main(string[] args)
{
RealizeIterator realizeIterator = new RealizeIterator();
for (Iterator iterator = realizeIterator.GetIterator(); iterator.HasNext();)
{
Console.WriteLine(iterator.Next());
}
/*
控制台:
张三
李四
王五
赵六
田七
*/
}
}
//定义 迭代器 接口 方法
public interface Iterator
{
bool HasNext();
object Next();
}
//容器接口 获取 一个 迭代器对象
public interface Container
{
Iterator GetIterator();
}
//实现 迭代器模式
public class RealizeIterator: Container
{
protected string[] names = new string[] { "张三","李四","王五","赵六","田七"};
public Iterator GetIterator()
{
return new OperationIterator();
}
private class OperationIterator : RealizeIterator, Iterator
{
int index;
public bool HasNext()
{
if(index< names.Length)
{
return true;
}
return false;
}
public object Next()
{
if (this.HasNext())
{
return names[index++];
}
return null;
}
}
}
}
缺点:由于迭代器模式将存储数据和遍历数据的职责分离,增加新的聚合类需要对应增加新的迭代器类,类的个数成对增加,这在一定程度上增加了系统的复杂性。