博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
16.迭代器模式(Iterator Pattern)
阅读量:5328 次
发布时间:2019-06-14

本文共 2512 字,大约阅读时间需要 8 分钟。

using System;namespace ConsoleApplication9{    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();        }        // 抽象聚合类        public interface IListCollection        {            Iterator GetIterator();        }        // 迭代器抽象类        public interface Iterator        {            //是否存在下个对象            bool MoveNext();            //获取下标对象            Object GetCurrent();            //下标加1            void Next();            //下标清0            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++;                }            }        }    }}

 

转载于:https://www.cnblogs.com/lgxlsm/p/4647065.html

你可能感兴趣的文章
windows 安装yaml支持和pytest支持等
查看>>
读书笔记:季羡林关于如何做研究学问的心得
查看>>
面向对象的优点
查看>>
套接口和I/O通信
查看>>
阿里巴巴面试之利用两个int值实现读写锁
查看>>
浅谈性能测试
查看>>
Winform 菜单和工具栏控件
查看>>
CDH版本大数据集群下搭建的Hue详细启动步骤(图文详解)
查看>>
巧用Win+R
查看>>
浅析原生js模仿addclass和removeclass
查看>>
Python中的greenlet包实现并发编程的入门教程
查看>>
java中遍历属性字段及值(常见方法)
查看>>
深入理解jQuery框架-框架结构
查看>>
YUI3自动加载树实现
查看>>
python知识思维导图
查看>>
当心JavaScript奇葩的逗号表达式
查看>>
App Store最新审核指南(2015年3月更新版)
查看>>
织梦MIP文章内容页图片适配百度MIP规范
查看>>
点击复制插件clipboard.js
查看>>
[Kali_BT]通过低版本SerialPort蓝牙渗透功能手机
查看>>