迭代器模式 深碍√TFBOYSˉ_ 2021-10-15 09:33 443阅读 0赞 在软件开发中,可以存储多个成员对象的类称为**聚合类(Aggregate Classes)**,对应的对象称为聚合对象。迭代器模式可以让客户端在无须了解聚合对象的内部结构的情况下,即可实现对聚合对象中的成员的遍历 **迭代器模式(Iterator Pattern):**提供一种方法访问聚合对象,而不用暴露该对象的内部实现。别名为**游标(Cursor)**。是一种对象行为型模式 完成迭代器模式至少要4个角色 抽象迭代器(Iterator):定义访问和遍历元素的接口,声明用于遍历数据元素的方法 具体迭代器(ConcreteIterator):实现了抽象迭代器 抽象聚合类(Aggregate):存储和管理元素对象,声明一个创建迭代器对象得方法 具体聚合类(ConcreteAggregate):实现了抽象迭代器 下面代码演示迭代器模式 这里以遍历书籍为例 定义书籍实体类 package com.design.behavioral.iterator; public class Book { private String name; public Book(String name) { this.name = name; } public String getName() { return name; } } 定义抽象迭代器 package com.design.behavioral.iterator; public interface BookIterator { Book nextBook(); boolean isLastBook(); } 定义具体迭代器 package com.design.behavioral.iterator; import java.util.List; public class BookIteratorImpl implements BookIterator{ private List list; private int position; public BookIteratorImpl(List list) { this.list = list; } @Override public Book nextBook() { System.out.println("书籍的位置是:" + position); Book book = (Book) list.get(position); position++; return book; } @Override public boolean isLastBook() { if (position < list.size()){ return false; } return true; } } 定义抽象聚合类 package com.design.behavioral.iterator; public interface BookAggregate { void addBook(Book book); void removeBook(Book book); BookIterator getBookIterator(); } 定义具体聚合类 package com.design.behavioral.iterator; import java.util.ArrayList; import java.util.List; public class BookAggregateImpl implements BookAggregate{ private List<Book> list; public BookAggregateImpl() { this.list = new ArrayList<Book>(); } @Override public void addBook(Book book) { this.list.add(book); } @Override public void removeBook(Book book) { this.list.remove(book); } @Override public BookIterator getBookIterator() { return new BookIteratorImpl(list); } } 类图如下 ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dzanp6Y2Jx_size_16_color_FFFFFF_t_70][] 测试调用 package com.design.behavioral.iterator; public class TestMain { public static void main(String[] args) { Book book1 = new Book("红楼梦"); Book book2 = new Book("三国演义"); Book book3 = new Book("水浒传"); Book book4 = new Book("西游记"); Book book5 = new Book("聊斋志异"); BookAggregate bookAggregate = new BookAggregateImpl(); bookAggregate.addBook(book1); bookAggregate.addBook(book2); bookAggregate.addBook(book3); bookAggregate.addBook(book4); bookAggregate.addBook(book5); BookIterator bookIterator = bookAggregate.getBookIterator(); while (!bookIterator.isLastBook()){ Book book = bookIterator.nextBook(); System.out.println(book.getName()); } } } 调用结果 ![20190813181743312.png][] **迭代器模式总结** 优点:简化了聚合类;分离了聚合对象的遍历行为;符合开闭原则 缺点:类的个数成对增加;增加了系统的复杂性;抽象迭代器设计难度较大 适用场景:访问一个聚合对象而无需暴露它的内部表示;为遍历不同的集合结构提供一个统一接口;为一个聚合对象提供多种遍历方式 [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dzanp6Y2Jx_size_16_color_FFFFFF_t_70]: /images/20211015/f9dc5401b8304dd9a55bfe29b5014ad5.png [20190813181743312.png]: /images/20211015/8e6f8bcc29a84cf6929ab617a5720491.png
相关 迭代器模式 一、前言 `相信相信的力量!` 从懵懂的少年,到拿起键盘,可以写一个HelloWorld。多数人在这并不会感觉有多难,也不会认为做不出来。因为这样的例子,有老师的指导、 ╰半夏微凉°/ 2022年10月16日 15:21/ 0 赞/ 26 阅读
相关 迭代器模式 转载:[迭代器模式 - C语言中文网][- C] 迭代器(Iterator)模式的定义:提供一个对象来顺序访问聚合对象中的一系列数据,而不暴露聚合对象的内部表示。迭代器模式是 你的名字/ 2022年09月01日 13:47/ 0 赞/ 17 阅读
相关 迭代器模式 [迭代器模式][Link 1] > Provides a way to access the elements of an aggregate object withou 刺骨的言语ヽ痛彻心扉/ 2022年05月30日 08:22/ 0 赞/ 302 阅读
相关 迭代器模式 迭代器模式 一、概述 1. 提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示。又称为:游标cursor模式 2. 聚合对象:存储数据 , 曾经终败给现在/ 2022年04月18日 06:26/ 0 赞/ 334 阅读
相关 迭代器模式 在软件开发中,可以存储多个成员对象的类称为聚合类(Aggregate Classes),对应的对象称为聚合对象。迭代器模式可以让客户端在无须了解聚合对象的内部结构的情况下,即可 深碍√TFBOYSˉ_/ 2021年10月15日 09:33/ 0 赞/ 444 阅读
相关 迭代器模式 用途 -------------------- 迭代器模式 (Iterator) 提供一种方法顺序访问一个聚合对象中各个元素,而又 不暴露该对象的内部表示。 迭代器模式 港控/mmm°/ 2021年09月26日 15:52/ 0 赞/ 549 阅读
相关 迭代器模式 迭代器模式:提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部元素; 为遍历的对象提供一个如开始、下一个、是否结束、当前哪一项等统一的接口。 优点: 1、它 柔光的暖阳◎/ 2021年09月17日 02:10/ 0 赞/ 455 阅读
相关 迭代器模式 16.迭代器模式 ![70][] class Program { static void Main(string[] a 雨点打透心脏的1/2处/ 2021年09月17日 00:04/ 0 赞/ 541 阅读
相关 迭代器模式 一 点睛 定义 提供一个对象来顺序访问聚合对象中的一系列数据,而不暴露聚合对象的内部表示。 二 结构 迭代器模式主要包含以下角色: 抽象聚合(Aggre 系统管理员/ 2021年07月25日 01:50/ 0 赞/ 511 阅读
相关 迭代器模式 代器模式(Iterator Pattern)是 Java 和 .Net 编程环境中非常常用的设计模式。这种模式用于顺序访问集合对象的元素,不需要知道集合对象的底层表示。 ... 小灰灰/ 2020年06月13日 05:39/ 0 赞/ 823 阅读
还没有评论,来说两句吧...