设计模式(十六)——迭代器模式
来源:互联网 发布:电子相册制作软件 知乎 编辑:程序博客网 时间:2024/06/06 02:24
迭代器模式(Iterator)
迭代器模式,提供一种方法顺序访问一个聚合对象中各个元素,而不暴露该对象的内部表示。
代码
1.代码如下:
迭代器抽象类
using System;namespace Iterator{//迭代器抽象类public abstract class Iterator{//第一个public abstract object First();//下一个public abstract object Next();//是否结束public abstract bool IsDone();//当前对象public abstract object CurrentItem();}}
聚集抽象类
using System;namespace Iterator{//聚集抽象类public abstract class Aggregate{public abstract Iterator CreateIterator();}}
具体迭代器类
using System;namespace Iterator{//具体迭代器类public class ConcreteIterator:Iterator{private ConcreteAggregate aggregate;private int current=0;public ConcreteIterator(ConcreteAggregate aggregate){this.aggregate=aggregate;}public override object First (){return aggregate [0];}public override object Next (){object ret = null;current++;if (current < aggregate.Count) {ret = aggregate [current];}return ret;}public override bool IsDone (){return current >= aggregate.Count ? true : false;}public override object CurrentItem (){return aggregate [current];}}}
具体聚集类
using System;using System.Collections;using System.Collections.Generic;namespace Iterator{//具体聚集类public class ConcreteAggregate:Aggregate{private IList<Object> items=new List<Object>();public override Iterator 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); }}}}2.客户端代码如下:
客户端
using System;namespace Iterator{class MainClass{public static void Main (string[] args){ConcreteAggregate concreteAggregate = new ConcreteAggregate ();concreteAggregate [0] = "A";concreteAggregate [1] = "B";concreteAggregate [2] = "C";concreteAggregate [3] = "D";concreteAggregate [4] = "E";Iterator iterator = new ConcreteIterator (concreteAggregate);while (!iterator.IsDone ()) {Console.WriteLine (iterator.CurrentItem());iterator.Next ();}}}}3.运行结果
UML图
源码下载地址:https://gitee.com/ZhaoYongshuang/DesignPattern.git
阅读全文
1 0
- 设计模式—迭代器模式(十六)
- 设计模式笔记(十六) —— 迭代器模式
- 设计模式(十六)——迭代器模式
- 设计模式(十六)迭代器模式
- 十六、迭代器模式——设计模式学习笔记
- 设计模式学习笔记(十六)——Command命令
- 设计模式(十六)state
- 设计模式实现(十六)---迭代器模式(Iterator)
- 设计模式之十六:迭代器模式(Iterator)
- 设计模式学习(十六)————适配器模式
- 设计模式C++实现十六:迭代器模式
- Python设计模式(十六)【迭代器模式】
- Java设计模式《十六》迭代器模式
- JAVA设计模式(十六)——中介者模式
- 设计模式学习笔记(十六)—Proxy模式
- 设计模式学习笔记(十六)—Proxy模式
- 设计模式 (十六)状态模式(State)
- Java设计模式(十六)----迭代子模式
- sendkeys模拟键盘QTP
- iOS开发之KVC和KVO原理解析和实例分析
- NOIP2017解题报告
- 移动端常用的meta属性
- python基本正则表达式
- 设计模式(十六)——迭代器模式
- CSS 常遇问题
- 关于项目中的日志文档
- MyBatis 插件之拦截器(Interceptor)实现原理
- 生成图标
- CentOS下安装Redis
- 淘宝笔试题:一颗完全二叉树,要求给所有节点加上一个pNext指针,指向同一层的相邻节点;如果当前节点已经是该层的最后一个节点,则将pNext指针指向NULL
- adb进程被占用
- springMVC 实现的增删查(没有数据库,用session代替)