• C#设计模式--迭代器模式(学习Learning hard设计模式笔记)


    /// <summary>
        /// 抽象聚合接口
        /// </summary>
        public interface IListCollection
        {
            Iterator GetIterator();
        }
    
        //迭代器抽象类
        public interface Iterator
        {
            bool MoveNext();
            Object GetCurrent();
            void Next();
            void Reset();
        }
    
        public class ConcreteList : IListCollection
        {
            int[] collection;
            public ConcreteList()
            {
                collection = new int[] { 2, 4, 6, 8 };
            }
    
            public Iterator GetIterator()
            {
                return new ConcreteIterator(this);
            }
    
            public int Length
            {
                get { return collection.Length; }
            }
    
            public int GetElement(int index)
            {
                return collection[index];
            }
        }
    
        public class ConcreteIterator : Iterator
        {
            private ConcreteList _list;
            private int _index;
    
            public ConcreteIterator(ConcreteList list)
            {
                _list = list;
                _index = 0;
            }
    
            public bool MoveNext()
            {
                if (_index < _list.Length)
                {
                    return true;
                }
                return false;
            }
    
            public Object GetCurrent()
            {
                return _list.GetElement(_index);
            }
    
            public void Reset()
            {
                _index = 0;
            }
    
            public void Next()
            {
                if (_index < _list.Length)
                {
                    _index++;
                }
            }
        }
    
     
    
    
        class Program
        {
            static void Main(string[] args)
            {
                Iterator iterator;
                IListCollection list = new ConcreteList();
                iterator = list.GetIterator();
    
                while (iterator.MoveNext())
                {
                    int i = (int)iterator.GetCurrent();
                    Console.WriteLine(i.ToString());
                    iterator.Next();
                }
    
                Console.Read();
            }
        }
    View Code

    原文地址 http://www.cnblogs.com/zhili/p/IteratorPattern.html

  • 相关阅读:
    Java的Timezone问题
    Java正确获取星期Calendar.DAY_OF_WEEK
    Solr5之Schema.xml详解
    java文档生成器
    JRE扩展与jar文件
    java的访问权限
    java包与导包
    java方法、方法重载
    算法分析作业(C|C++版本)
    Java运算符
  • 原文地址:https://www.cnblogs.com/zyfadmin/p/8470881.html
Copyright © 2020-2023  润新知