迭代器模式

简介: 迭代器模式

定义:提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示


模式优点: 1、它支持以不同的方式遍历一个聚合对象。


                2、迭代器简化了聚合类。


                3、在同一个聚合上可以有多个遍历。


                4、在迭代器模式中,增加新的聚合类和迭代器类都很方便,无须修改原有代码。


缺点:由于迭代器模式将存储数据和遍历数据的职责分离,增加新的聚合类需要对应增加新的迭代器类,类的个数成对增加,这在一定程度上增加了系统的复杂性。.

 //聚集抽象类
    abstract class Aggregate
    {
        public abstract Iterator CreateIterator();//创建迭代器
    }
//具体聚集类
    class ConcreteAggregate : Aggregate
    {
        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);}
            }
    }
 //迭代器抽象类
    abstract class Iterator
    {
        public abstract object First();//得到开始对象
        public abstract object Next();//得到下一个对象
        public abstract bool IsDone();//判断是否结尾
        public abstract object CurrentItem();//当前对象
    }
//具体迭代类
    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()//判断当前是否遍历到结尾,到结尾返回true
        {
            return current >= aggregate.Count ? true : false;
        }
        public override object CurrentItem()//返回当前的聚集对象
        {
            return aggregate[current]; 
        }
    }
相关文章
|
7月前
|
设计模式 uml C++
行为型 迭代器模式
行为型 迭代器模式
45 0
|
设计模式 存储 算法
设计模式~迭代器模式(Iterator)-20
迭代器模式(Iterator Pattern)是Java和.Net编程环境中非常常用的设计模式。这种模式用于顺序访问集合对象的元素,不需要知道集合对象的底层表示。迭代器模式属于行为型模式。迭代器模式已经被淘汰,java中已经把迭代器运用到各个聚集类(collection)中了,使用java自带的迭代器就已经满足我们的需求了 目录 迭代器模式(Iterator) (1)优点 (2)缺点 (3)使用场景 (4)注意事项 (5)应用实例: 代码
60 0
|
设计模式 存储 Java
迭代器模式
迭代器模式(Iterator Pattern)是一种行为型设计模式,它提供了一种顺序访问聚合对象中每个元素的方法,而不暴露其内部实现。
104 1
|
容器
关于迭代器模式我所知道的
关于迭代器模式我所知道的
57 0
|
设计模式 Java 索引
Java设计模式-迭代器模式(Iterator)
Java设计模式-迭代器模式(Iterator)
|
JavaScript 前端开发
简单理解迭代器模式
这几天研究了一下迭代器模式,期间有一段时间经常搞不太懂一些概念与概念之间的关系,今天来整理一下。
132 0
|
设计模式 存储 容器
我学会了,迭代器模式
迭代器模式属于行为型模式,这个类型的设计模式总结出了 类、对象之间的经典交互方式,将类、对象的行为和使用解耦了,花式的去使用对象的行为来完成特定场景下的功能。
104 0
我学会了,迭代器模式
|
Java 容器
迭代器模式
迭代器模式
115 0
|
Java uml 容器
被用到炉火纯清的迭代器模式
迭代器模式(Iterator),提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示。
118 0
被用到炉火纯清的迭代器模式
|
设计模式 存储 Java
迭代器模式:理解与实践
上面的这段代码通过循环逐一将arr的下标加1,从而实现了遍历数组的功能。 但是通过循环实现遍历的话依赖于集合对象内部,因此就有了一种能顺序访问集合对象中各个元素,又无需依赖对象内部表示的设计模式--迭代器模式。

热门文章

最新文章