西南IT社区
    • 注册
    • 登录
    • 搜索
    • 主页
    • 问答
    • 话题
    • 热门
    • 圈子
    • 工作机会
    • 活动
    • 项目

    迭代模拟器

    技术答疑
    迭代模拟器
    1
    1
    19
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • 此
      此恨绵绵 最后由 编辑

        迭代器(iterator)是一种对象,它能够用来遍历标准模板库容器中的部分或全部元素,每个迭代器对象代表容器中的确定的地址。迭代器修改了常规指针的接口,所谓迭代器是一种概念上的抽象:那些行为上像迭代器的东西都可以叫做迭代器。然而迭代器有很多不同的能力,它可以把抽象容器和通用算法有机的统一起来。迭代器基本分为五种,输入输出迭代器,前向逆向迭代器,双向迭代器和随机迭代器。

        迭代器设计模式(Iterator Design Pattern),也叫作游标设计模式(Cursor Design Pattern)。
        迭代器模式将集合对象的遍历操作从集合类中拆分出来,放到迭代器类中,让两者的职责更加单一。其定义是,提供一种方法来访问聚合对象,而不暴露这个对象的内部实现。

        迭代器模式的主要优点如下:封装性良好,访问一个聚合对象的内容而无需暴露它的内部实现;将遍历操作交给迭代器,简化了复杂聚合类的设计;支持以不同的方式遍历聚合对象,在同一个聚合对象上可以定义多种遍历方式;增加新的聚合类和迭代器类都很方便,满足开闭原则。

        迭代器模式的主要缺点如下:迭代器模式将存储数据和遍历数据的职责分离,增加新的聚合类需要对应增加新的迭代器类,类的个数成对增加;抽象迭代器的设计难度较大,需要充分考虑系统将来的扩展。

        迭代器模式的适用场景如下:访问一个聚合对象的内容而无需暴露它的内部实现;需要为一个聚合对象提供多种遍历方式;为遍历不同的聚合对象提供一个统一的接口。
      最顶层的 Collection 集合接口继承了 Iterable接口,其实表明了所有的集合对象都是可迭代对象,并且都需要实现获取 Iterator 对象的方法。

        将这个源码映射到典型实现中,Iterable 接口和 Collection 接口就是抽象聚合接口,Iterator 接口则是抽象迭代器接口。
      eb32b136-8457-4f4a-bd02-aad8eca1389f-image.png

      1 条回复 最后回复 回复 引用 0
      • First post
        Last post
      使用HTML构建办公软件 使用HTML构建办公软件 使用HTML构建办公软件
      此
      F
      漫
      成
      Y
      洋
      书
      Y
      D
      U
      Y
      娇
      玩
      1
      光
      A
      庆
      小
      U
      Y
      L
      I
      Z
      I
      Y

      西南地区IT社群(QQ)
      云南
      【昆明网页设计交流吧】243627302
      【昆明nodejs交流吧】 243626749
      【VUE】838405306
      【云南程序员总群】343606807
      【昆明UI设计】104031254
      【云南软件外包】15547313
      贵州
      【PHP/java源码/站长交流群】55692114
      四川
      【成都Java/JavaWeb交流】86669225
      【vaScript+PHP+MySql】116270060
      【UI设计/设计交流学习群】135794928
      重庆
      【诺基亚 JAVA游戏博物馆】 559479780
      【PHP,Java,Python,C++接单】 442103442
      西藏
      社群
      昆明网页设计交流吧
      友情链接
      • Funtask
      • Funtask 社区
      • SUWIS
      ©2019-2021 滇ICP备20006698号