打开APP
未登录
开通VIP,畅享免费电子书等14项超值服
开通VIP
首页
好书
留言交流
下载APP
联系客服
设计模式(4)迭代器模式
昵称10504424
>《架构设计》
2013.03.07
关注
迭代器模式(Iterator):提供一种方法顺次访问聚合对象中各个元素,同时不暴露对象内部细节。结构图
结构
迭代器抽象类(Iterator):负责定义访问和遍历元素的接口。
定义当前开始对象、得到下一个对象、得到下一个对象、判断是否结尾。将列表的访问和遍历从列表对象中分离,并放到迭代器对象(Iterator)中。
[csharp] view plaincopyprint?
//迭代器抽象类
abstract class Iterator
{
public abstract object First();
public abstract object Next();
public abstract object IsDone();
public abstract object CurrentItem();
}
具体迭代器(Concrete Iterator):实现迭代器接口,记录遍历中当前位置。
[csharp] view plaincopyprint?
//具体迭代器类,继承Iterator
class ConcreteIterator : Iterator
{
private ConcreteAggregate aggregate;
private int current = 0;
public ConcreteIterator(ConcreteAggregate aggregate)
{
this.aggregate = aggregate;
}
public override object First()
{
return aggregate [0];
}
public override object Next()
{
object ret = null;
current++;
if (current < aggregate.count)
{
ret = aggregate [current];
}
return ret;
}
public override bool IsDone()
{
return current >=aggregate .count ?true:false ;
}
public override object CurrentItem()
{
return aggregate [current ];
}
}
聚集抽象类(Aggregate):提供创建具体迭代器的接口。
[csharp] view plaincopyprint?
//聚集抽象类
abstract class Aggreate
{
public abstract Iterator CreateIterator();
}
具体聚集类(ConcreteAggregate):存放聚合对象,返回聚集的个数并声明一个索引器。
[csharp] view plaincopyprint?
//具体聚集类
class ConcreteAggregate : Aggreate
{
private IList<object > items =new List <object >();
public override Iterator 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); }
}
}
客户端
[csharp] view plaincopyprint?
static void Main(string[] args)
{
ConcreteAggregate a = new ConcreteAggregate();
a[0] = "persona";
a[1] = "personb";
Iterator i =new ConcreteIterator (a );
object item = i.First();
while (!i.IsDone())
{
Console.WriteLine("{0}请先买票!",i.CurrentItem ());
i.Next();
}
Console.ReadLine();
}
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报
。
打开APP,阅读全文并永久保存
查看更多类似文章
猜你喜欢
类似文章
【热】
打开小程序,算一算2024你的财运
浅学设计模式之迭代器模式
【C#设计模式-迭代器模式】
简说设计模式——迭代器模式
GOF设计模式
设计模式之迭代器与组合模式(一)
设计模式--迭代器模式(Iterator)
更多类似文章 >>
生活服务
热点新闻
留言交流
回顶部
联系我们
分享
收藏
点击这里,查看已保存的文章
导长图
关注
一键复制
下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!
联系客服
微信登录中...
请勿关闭此页面
先别划走!
送你5元优惠券,购买VIP限时立减!
5
元
优惠券
优惠券还有
10:00
过期
马上使用
×