三、经典模式(16)迭代器模式

迭代器模式

迭代器用于对一个聚合对象进行遍历,聚合对象只负责存储数据,而遍历数据由迭代器来完成,更符合单一职责原则的要求。
存储多个成员对象(元素)被称为聚合类(Aggregate Classes),对应对象为聚合对象。
迭代器模式:提供一种方法顺序访问同一个聚合对象中各个元素,且不用暴露该对象的内部表示。

迭代器模式有4种角色:
1.Iterator(r抽象迭代器):它定义了访问和遍历元素的接口吗,声明了用于遍历数据元素的方法。如:获取第一元素的First()方法,访问下一个元素的Next()方法,判断是否还有下一个元素的HasNext()方法,用于获取当前元素的CurrentItem()方法等。
2.ConcreteIterator(具体迭代器):它实现了抽象迭代器的接口,完成对聚合对象的遍历,同时在具体迭代器中通过游标来记录在聚合对象中所处的当前位置。
3.Aggregate(抽象聚合类):它用于存储和管理元素对象,声明一个CreateIterator()方法用于创建一个迭代器对象,充当抽象迭代器工厂角色。
4.ConcreteAggregate(具体聚合类):它是抽象聚合类的子类,实现了在抽象聚合类中声明的CreateIterator()方法,该方法返回一个与该具体聚合类对应的具体迭代器ConcreteIterator实例。

抽象迭代器类:
interface Iterator
{
   void First();  //将游标指向第一个元素
   void Next();   //将游标指向下一个元素
   bool HasNext(); //判断是否存在下一个元素
   object CurrentItem(); //获取游标指向的当前元素
}
class ConcreteIterator:Iterator
{
    private ConcreteAggregate  objects;  //维持一个对具体聚合对象的引用,以便访问存储在聚合对象中数据
    private int cursor; //定义一个游标,用于记录当前访问位置。
    public ConcreteIterator(ConcreteAggregate objects)
    {
       this.objects = objects;
    }
    public void First(){}
    public void Next(){}
    public void HasNext(){}
    public object CurrentItem(){//实现代码}
}
聚合类(用于存储并负责创建迭代器对象)interface Aggregate
{
   Iterator CreateIterator();
}
具体聚合类:
class ConcreteAggregate:Aggregate
{
   ...
   public Iterator CreateIterator()
   {
      return new ConcreteIterator(this);
   }
   ...
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值