Iterator 迭代器 行为模式

本文介绍迭代器模式的基本概念,包括其组成元素:迭代器接口、具体迭代器、集合接口及具体集合。通过AS3代码示例展示如何实现迭代器模式,并解释了Null迭代器的应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Iterator 迭代器 行为模式,提供一种顺序访问一个聚合对象中的各个元素的方法,而又不破坏该聚合对象的内部表示。

 

别名游标,这个模式,在Composite模式的例子一时实际上已经用到了,而且在Flex中的也是有的。比如,Flex中有个类叫ArrayColllection有一个方法叫createCursor():IViewCursor。Iterator模式还是比较好理解的。

 


迭代器模式由一下几种组成元素:

    迭代器接口:用于对几何数据进行迭代的接口

    具体迭代器

    集合接口

    具体集合

 

 

下面来看一下代码:

 

 

IIterator.as

package {
    public interface IIterator {
        function reset();
        function next();
        function hasNext():Boolean;
    }
}

 

   来看一个具体的迭代器

 

ArrayIterator.as

package {
    public class ArrayIterator implements IIterator {
        private var collection:Array;
        private var index = 0;
        public function ArrayIterator(collection:Array) {
            this.collection = collection;
        }
        
        public function hasNext():Boolean {
            return index < collection.length;
        }
        
        public function next():Object {
            return collection[index++];
        }
        
        public function reset():void {
            index = 0;
        }
    }
}

 

   有种特殊的迭代器,叫Null迭代器,使用Null迭代器可以创建一个和接口紧密相连、但不用包含任何集合数据的类。如下定义:

 

 

 

NullIterator.as

package {
    public class NullIterator implements IIterator {
        public function NullIterator() {
        
        }
        
        public function hasNext():Boolean {
            return false;
        }
        
        public function next():Object {
            return null;
        }
        
        public function reset():void {}
    }
}
 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值