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

      迭代器模式,属于行为型设计模式,用于顺序访问集合对象的元素,不关心集合对象的底层表示。

      问题描述:提供一种不一样的方式来遍历整个集合对象。

      解决方案:把在元素之间游走的责任交给迭代器,而不是聚合对象。

      结构图

      举个栗子:讲一个遍历图库的故事。。。

      我们现有一个相册,相册是许多图片的聚合物,可以通过一个迭代器来访问和遍历整个相册中的图片对象,方便我们查找和获取数据。具体实现方式如下:

      1. 新建一个抽象迭代器Iterator,声明一些操作方法。代码如下:

          

      2. 新建一个具体迭代器ConcreteIterator,实现抽象接口Iterator中的方法。代码如下:

          

      3. 新建一个抽象聚合接口Aggregate,声明一些操作方法。代码如下:

          

      4. 新建一个具体迭代器ConcreteAggregate,实现抽象接口Aggregate中的方法。代码如下:

          

      5. 迭代器的使用方式如下:

          

              

      6. 运行后的效果,如图所示:

              

      

      优点

      1. 迭代器简化了聚合类,并且增加新的聚合类和迭代器类都很方便,无需修改原有的代码;

      2. 在一个聚合上可以有多个遍历。

      缺点:聚合类和迭代器类一一对应,没增加一个聚合类就要增加一个迭代器类,类的个数会成对增加,在一定程度上增加了系统的复杂性。

      适用场景

      1. 访问一个聚合对象的内容而无须暴露它的内部表示;

      2. 需要为聚合对象提供多种遍历方式;

      3. 为遍历不同的聚合结构提供一个统一的接口。

  • 相关阅读:
    深入理解Aspnet Core之Identity(1)
    vscode同步插件 sync(gist,token)
    括号匹配问题
    EI目录下载地址及保护密码
    极简单的方式序列化sqlalchemy结果集为JSON
    OpenCvSharp 通过特征点匹配图片
    HttpWebRequest提高效率之连接数,代理,自动跳转,gzip请求等设置问题
    子网掩码划分
    使用批处理复制并以时间规则重命名文件
    九步确定你的人生目标
  • 原文地址:https://www.cnblogs.com/chenxkang/p/6782089.html
Copyright © 2011-2022 走看看