16.迭代器模式(Iterator Pattern)
- using System;
- namespace ConsoleApplication9
- {
- class Program
- {
- /// <summary>
- /// 迭代器模式提供了一种方法顺序访问一个聚合对象(理解为集合对象)中各个元素,
- /// 而又无需暴露该对象的内部表示,这样既可以做到不暴露集合的内部结构,
- /// 又可让外部代码透明地访问集合内部的数据。
- /// </summary>
- /// <param name="args"></param>
- 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[] { , , , };
- }
- 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 = ;
- }
- public bool MoveNext()
- {
- if (_index < _list.Length)
- {
- return true;
- }
- return false;
- }
- public Object GetCurrent()
- {
- return _list.GetElement(_index);
- }
- public void Reset()
- {
- _index = ;
- }
- public void Next()
- {
- if (_index < _list.Length)
- {
- _index++;
- }
- }
- }
- }
- }
16.迭代器模式(Iterator Pattern)的更多相关文章
- [设计模式] 16 迭代器模式 Iterator Pattern
在GOF的<设计模式:可复用面向对象软件的基础>一书中对迭代器模式是这样说的:提供一种方法顺序访问一个聚合对象中各个元素,而又不需要暴露该对象的内部表示. 类图和实例: 迭代器模式由以下角 ...
- 设计模式(十):从电影院中认识"迭代器模式"(Iterator Pattern)
上篇博客我们从醋溜土豆丝与清炒苦瓜中认识了“模板方法模式”,那么在今天这篇博客中我们要从电影院中来认识"迭代器模式"(Iterator Pattern).“迭代器模式”顾名思义就是 ...
- 乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern)
原文:乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern) [索引页][源码下载] 乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern) 作者:weba ...
- 设计模式学习--迭代器模式(Iterator Pattern)和组合模式(Composite Pattern)
设计模式学习--迭代器模式(Iterator Pattern) 概述 ——————————————————————————————————————————————————— 迭代器模式提供一种方法顺序 ...
- 二十四种设计模式:迭代器模式(Iterator Pattern)
迭代器模式(Iterator Pattern) 介绍提供一种方法顺序访问一个聚合对象中各个元素,而又不需暴露该对象的内部表示. 示例有一个Message实体类,某聚合对象内的各个元素均为该实体对象,现 ...
- 设计模式 - 迭代器模式(iterator pattern) 具体解释
迭代器模式(iterator pattern) 详细解释 本文地址: http://blog.csdn.net/caroline_wendy 迭代器模式(iterator pattern) : 提供一 ...
- 设计模式系列之迭代器模式(Iterator Pattern)——遍历聚合对象中的元素
模式概述 模式定义 模式结构图 模式伪代码 模式改进 模式应用 模式在JDK中的应用 模式在开源项目中的应用 模式总结 说明:设计模式系列文章是读刘伟所著<设计模式的艺术之道(软件开发人员内功修 ...
- 迭代器模式(Iterator Pattern)
迭代器模式定义:Iterator Pattern提供一种方法顺序访问一个聚合元素中的各个元素,而又不暴漏内部方法 酒吧提供beer和wine: public class Bar { private L ...
- C#设计模式——迭代器模式(Iterator Pattern)
一.概述在软件开发过程中,我们可能会希望在不暴露一个集合对象内部结构的同时,可以让外部代码透明地访问其中包含的元素.迭代器模式可以解决这一问题.二.迭代器模式迭代器模式提供一种方法顺序访问一个集合对象 ...
随机推荐
- 迷之this?(转)
1. 迷之this 对于刚开始进行 JavaScript 编程的开发者来说,this 具有强大的魔力,它像谜团一样需要工程师们花大量的精力去真正理解它. 在后端的一些编程语言中,例如 Java.PHP ...
- 160809209_李梦鑫_C语言程序设计实验3 循环结构程序设计
<C语言程序设计>实验报告 学 号 160809209 姓 名 李梦鑫 专业.班 计科16-2班 学 期 2016-2017 第1学期 指导教师 黄俊莲 吉吉老师 实验地点 C05 ...
- 第3次作业,c语言
<C语言程序设计>实验报告 学 号 160809201 姓 名 王浩然专业.班 计科16-2班 学 期 2016-2017 第1学期 指导教师 黄俊莲 ...
- Vijos P1769 网络的关键边
Description 一个连通的无向图,有些点有A属性,有些点有B属性,可以同时具有.删掉某条边后,如果使得连通块中一些点不具有A,B属性的点,求这些边. Sol Tarjan求割边. 首先这些边一 ...
- tinyhttp源码阅读(注释)
这里就不细述了,代码很简单. 其实现的功能比较若,可以做一个参考. 因为其通过文件的权限位来判断是否是一个CGI脚本,所以在权限位不对的情况下会判断不正确.例如我将这个目录放置在NTFS分区,所有的文 ...
- Arlenmbx!!!!
我无限制的以安逸为想法 其实生活的不安逸 我所做的事情和思路到底正不正确? 我失败了? 我做不到? 我尝试做到? 我可以做到! 我能做到 我做到了我已经做到了 难道想法和现实是有区别的吗 有理想只是空 ...
- symfony2 环境搭建笔记
本机环境:windows+xampp symfony下载:官网下载 环境配置: 1.下载后将symfony文件夹解压到xampp/htdocs中(最好改一下文件夹名,尽量小写) 2.Symfony2自 ...
- apache2错误日志在哪,可以看到php错误
在以下路径中 /var/log/apache2/error.log
- oracle,mybatis主键自增长
<insert id="insert" parameterType="resource"> <selectKey resultType=&qu ...
- Appium+Robotframework实现Android应用的自动化测试-3:一个必不可少的工具介绍
万事具备,接下来我们就要开始编写测试脚本了. 不过,有个重要的问题还没有解决.我们知道RobotFramework在web 网页中主要依靠元素的id,name或者xpath来定位页面上的元素,我们依赖 ...