zoukankan      html  css  js  c++  java
  • 【设计模式】15.迭代器模式

    说明:迭代器模式可以看成是一个对象的集合,比如List<class>。提供增删,遍历集合里的元素。.NET中的GetEnumerator()就是迭代器模式的。

       迭代器要1个类做聚合,1个类做迭代。聚合有Get迭代方法,具体对象集合(看当时需求),迭代器有MoveNext(),Reset(),Current()方法

    实现:

    /// <summary>
        /// 迭代器接口
        /// </summary>
        public interface Iterator
        {
            bool MoveNext();
            void Next();
            void Reset();
            object GetCurrent();
        }
    
        /// <summary>
        /// 聚合对象接口
        /// </summary>
        public interface IList_Num
        {
            Iterator GetIterator();
        }
    
        /// <summary>
        /// 迭代器具体实现类
        /// </summary>
        public class ConcreteIterator :Iterator
        {
            NumList numlist1;
            int index;
    
            public ConcreteIterator(NumList nl)
            {
                numlist1 = nl;
                index = 0;
            }
    
            public bool MoveNext() {
                if (index < numlist1.Length()) 
                { return true; }
                return false;
            }
            public void Next() { 
                if(index<numlist1.Length())
                {
                    index++;
                }
            }
            public void Reset() {
                index = 0;
            }
            public object GetCurrent() {
                return numlist1.GetElement(index);
            }
        }
    
        /// <summary>
        /// 聚合对象的具体实现类
        /// </summary>
        public class NumList : IList_Num
        {
            int[] collection;
            public NumList()
            {
                collection =new int[] { 2, 3, 4, 5, 6 };
            }
    
            public Iterator GetIterator()
            {
                return new ConcreteIterator(this);
            }
    
            public int GetElement(int Index)
            {
                return collection[Index];
            }
    
            public int Length()
            {
                return collection.Length;
            }
        }
    
        public class test
        {
            public void start() {
    
                IList_Num num = new NumList();
                Iterator iterator1=num.GetIterator();
    
                while(iterator1.MoveNext())
                {
                    //遍历每个对象
                    iterator1.GetCurrent();
                    iterator1.Next();
                }
            }
        }
  • 相关阅读:
    .NET视频学习总结
    hdu5288(2015多校1)OO’s Sequence
    【Go web开发之revel+mgo】第1章 述与环境
    Android获得当前系统时间、星期几、周几
    夯实Java:从面向对象说起
    centos7 安装nginx
    centos7 安装nginx
    centos7 安装nginx
    element-ui中cascader同时获取label和value值
    element-ui中cascader同时获取label和value值
  • 原文地址:https://www.cnblogs.com/laokchen/p/13543798.html
Copyright © 2011-2022 走看看