zoukankan      html  css  js  c++  java
  • Design Patterns(十七):Iterator PatternVB代码

    结构图

     

    角色

    • 迭代器(Iterator)角色:负责定义和遍历元素的接口。
    • 具体迭代器(Concrete Iterator)角色:实现迭代器接口,并要记录遍历中的当前位置。  
    • 容器(Container)角色:容器角色负责提供创建具体迭代器角色的接口。
    • 具体容器(Concrete Container)角色:具体容器角色实现创建具体迭代器角色的接口——这个具体迭代器角色于该容器的结构相关。

    动机

      在软件构建过程中集合对象内部结构常常变化各异。但对于这些集合对象,我们希望在不暴露其内部结构的同时,可以让外部程序代码透明的访问其中包含的元素;  同时这种“透明遍历”也为“同一种算法在多种集合对象上进行操作” 提供了可能。
        使用面向对象技术将这种遍历机制抽象抽象为“迭代器”为“应对变化中的集合对象”提供了一种优雅的方式。

    意图

      
    提供一种方法顺序访问一个聚合对象中各个元素,而又不需暴露该对象的内部表示。

    示意性代码

    示意性代码

     一个实例

     下面的迭代器代码用来演示跳过某些项目遍历一个集合。

    实例代码

    Iterator Pattern模式的几个要点:
       1、迭代抽象:访问一个聚合对象的内容而无需暴露它的内部信息。
       2、迭代多态:为遍历不同的集合结构提供一个统一的接口,从而支持同样的算法在不同的集合结构上进行操作。
       3、迭代器健壮性考虑:遍历的同时更改迭代器所在的集合结构,会导致问题。

    我的理解

    封装集合对象的内部结构和遍历集合的算法,支持集合和算法的变化。

    参考资料
    《C#面向对象设计模式纵横谈系列课程(18)》     李建中老师


  • 相关阅读:
    oracle基础~ash报告管理
    django基础-bootstarp
    django基础~admin入门
    django基础~jquery交互
    oracle基础~RAC-grid搭建
    Oracle基础~RAC搭建准备二
    oracle基础~RAC搭建准备一
    oracle基础~补丁安装
    环境准备、框架认识、新建maven项目和配置tomcat
    python线程问题、深浅拷贝、属性动态设置
  • 原文地址:https://www.cnblogs.com/sekihin/p/Iterator_Pattern.html
  • Copyright © 2011-2022 走看看
    Creative Commons License 本作品采用 知识共享署名-非商业性使用 2.5 中国大陆许可协议进行许可。