zoukankan      html  css  js  c++  java
  • 迭代器模式

    定义:

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

    使用环境:

      当你需要访问一个聚集对象,而且不管这些对象是什么都需要遍历的时候。

      需要对聚集有多种方式遍历时。

    表现:

      为遍历不同的聚集结构提供如开始、下一个、是否结束、当前哪一项等统一的接口。

      高级编程语言本身已经把这个模式包含在语言中了。例如:foreach in、IEnumerable接口。

      学习价值远远大于实用价值。

    结构图:

      

      ConcreteIterator:

      

       

      ConcreteAggregate:

       

      客户端:

      

      

      注:

      为什么用具体的迭代器ConcreteIterator来实现抽象的Iterator?不需要抽象,直接访问ConcreteIterator?

       当需要对聚集有多种方式遍历,使用抽象类,修改方便。

      ConcreteIteratorDesc:

      

      

      客户端修改:

      

    .NET中的实现:

      IEumerator,支持对非泛型集合的简单迭代接口。

      

      

      IEnumerable,公开枚举数。改枚举数支持在非泛型集合上进行简单迭代。

      

      例如, foreach in的应用:尽管不需要显式的引用迭代器,但是系统本身还是通过迭代器来遍历实现的

      

      编译器的工作:

      

    原理:

      分离了集合对象的遍历行为,抽象出一个迭代器来负责。这样皆可以做到不暴露结合的内部结构,又可让外部代码透明底访问集合内部的数据。

      迭代器模式在访问数组、集合、列表等数据时,尤其是数据库数据操作时,是非常普遍的应用,且各种高级语言都对它进行了封装。

    扩展:

      研究历史是为了更好地迎接未来。

  • 相关阅读:
    Oracle的数据库,实例,服务名
    ubuntu14.04安装oracle 11g
    sqlldr导入导出需要注意的问题
    EOF字符串
    登录plsql developer时候出现连接串问题导致的下拉列表中没有出现tnsnames.ora文件中配置的那些服务
    Oracle导出数据中的prompt,set feedback 等是什么意思
    怎么给普通用户付给权限,让它能读取v$session表
    Oracle数据库状态
    管理子程序
    pl/sql developer安装与配置
  • 原文地址:https://www.cnblogs.com/panpanwelcome/p/5593901.html
Copyright © 2011-2022 走看看