设计模式-迭代器模式(iterator pattern)

名称:迭代器模式

说说:

动机:

适用性:

参与者:

结果:提供一个方法顺序访问一个聚合对象的各个元素,而又不需要暴露该对象的内部表示

类图:


说明:

demo c#:

namespace Iterator {
    class Program {
        static void Main(string[] args) {
            concreteAggregate a = new concreteAggregate();
            a[0] = "h";
            a[1] = "e";
            a[2] = "l";
            a[3] = "l";
            a[4] = "o";
            a[5] = "!";
            iIterator i = a.createIterator();
            while (i.hasNext()) {
                var obj = i.next();
                Console.Write(obj.ToString());
            }
            Console.Read();
        }
    }
    // main code
    interface iIterator {
        object first();
        object next();
        object currentItem();
        bool hasNext();
    }
    interface iAggregate {
        iIterator createIterator();
    }

    class concreteIterator : iIterator {
        private concreteAggregate aggregate;
        private int current = 0;

        public concreteIterator(concreteAggregate aggregate) {
            this.aggregate = aggregate;
        }

        public object first() {
            return aggregate[0];
        }
        public object next() {
            var obj = aggregate[current];
            current++;
            return obj;
        }
        public object currentItem() {
            return aggregate[current];
        }
        public bool hasNext() {
            return current >= aggregate.Count ? false : true;
        }
    }

    class concreteAggregate : iAggregate {
        private IList<object> items = new List<object>();

        public iIterator 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); }
        }
    }  
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值