迭代器模式 柔光的暖阳◎ 2021-09-17 02:10 455阅读 0赞 迭代器模式:提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部元素; 为遍历的对象提供一个如开始、下一个、是否结束、当前哪一项等统一的接口。 **优点:** 1、它支持以不同的方式遍历一个聚合对象。 2、迭代器简化了聚合类。 3、在同一个聚合上可以有多个遍历。 4、在迭代器模式中,增加新的聚合类和迭代器类都很方便,无须修改原有代码。 **缺点:**由于迭代器模式将存储数据和遍历数据的职责分离,增加新的聚合类需要对应增加新的迭代器类,类的个数成对增加,这在一定程度上增加了系统的复杂性。 实例UML图: ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dhbmdfc2h1eXU_size_16_color_FFFFFF_t_70][] 代码实现: /** * @author Shuyu.Wang * @package:com.shuyu.iterator * @description:迭代器接口类 * @date 2018-11-22 22:46 **/ public interface Iterator { Object first(); Object next(); boolean isDone(); Object getCurrentItem(); } /** * @author Shuyu.Wang * @package:com.shuyu.iterator * @description:聚集接口类 * @date 2018-11-22 22:49 **/ public interface Aggregate { Iterator getIterator(); } /** * @author Shuyu.Wang * @package:com.shuyu.iterator * @description:具体聚集类 * @date 2018-11-22 22:53 **/ public class ConcreteAggregate implements Aggregate { private ArrayList<Object> arrayList=new ArrayList<>(); @Override public Iterator getIterator() { return new ConcreteIterator(this); } public int count(){ return arrayList.size(); } public Object getArrayListValue(int id) { return this.arrayList.get(id); } public void addArrayList(String value) { this.arrayList.add(value); } } @Override public Object first() { return concreteAggregate.getArrayListValue(0); } @Override public Object next() { Object object=null; current++; if (current<concreteAggregate.count()){ object=concreteAggregate.getArrayListValue(current); } return object; } @Override public boolean isDone() { return current>=concreteAggregate.count()?true:false; } @Override public Object getCurrentItem() { return concreteAggregate.getArrayListValue(current); } } 测试代码: @RunWith(SpringRunner.class) @SpringBootTest @Slf4j public class IteratorApplicationTests { @Test public void contextLoads() { ConcreteAggregate concreteAggregate=new ConcreteAggregate(); concreteAggregate.addArrayList("name1"); concreteAggregate.addArrayList("name2"); concreteAggregate.addArrayList("name3"); concreteAggregate.addArrayList("name4"); Iterator iterator=new ConcreteIterator(concreteAggregate); Object frist=iterator.first(); while (!iterator.isDone()){ log.info("到你了:"+iterator.getCurrentItem()); iterator.next(); } } } 执行结果: 2018-11-22 23:13:06.529 INFO 10556 --- \[ main\] com.shuyu.IteratorApplicationTests : 到你了:name1 2018-11-22 23:13:06.530 INFO 10556 --- \[ main\] com.shuyu.IteratorApplicationTests : 到你了:name2 2018-11-22 23:13:06.530 INFO 10556 --- \[ main\] com.shuyu.IteratorApplicationTests : 到你了:name3 2018-11-22 23:13:06.530 INFO 10556 --- \[ main\] com.shuyu.IteratorApplicationTests : 到你了:name4 github代码地址:[https://github.com/iot-wangshuyu/designpatterns/tree/master/iterator][https_github.com_iot-wangshuyu_designpatterns_tree_master_iterator] [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dhbmdfc2h1eXU_size_16_color_FFFFFF_t_70]: /images/20210901/8a7cebb23c684a1dba15fc7f6a4c169f.png [https_github.com_iot-wangshuyu_designpatterns_tree_master_iterator]: https://github.com/iot-wangshuyu/designpatterns/tree/master/iterator
相关 迭代器模式 一、前言 `相信相信的力量!` 从懵懂的少年,到拿起键盘,可以写一个HelloWorld。多数人在这并不会感觉有多难,也不会认为做不出来。因为这样的例子,有老师的指导、 ╰半夏微凉°/ 2022年10月16日 15:21/ 0 赞/ 26 阅读
相关 迭代器模式 转载:[迭代器模式 - C语言中文网][- C] 迭代器(Iterator)模式的定义:提供一个对象来顺序访问聚合对象中的一系列数据,而不暴露聚合对象的内部表示。迭代器模式是 你的名字/ 2022年09月01日 13:47/ 0 赞/ 18 阅读
相关 迭代器模式 [迭代器模式][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 赞/ 456 阅读
相关 迭代器模式 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 赞/ 512 阅读
相关 迭代器模式 代器模式(Iterator Pattern)是 Java 和 .Net 编程环境中非常常用的设计模式。这种模式用于顺序访问集合对象的元素,不需要知道集合对象的底层表示。 ... 小灰灰/ 2020年06月13日 05:39/ 0 赞/ 824 阅读
还没有评论,来说两句吧...