迭代器模式 蔚落 2022-05-31 09:15 238阅读 0赞 1.使用场景: 1.1访问一个聚合对象的内容而无需暴露它的内部表示 1.2支持对聚合对象的多种遍历 1.3为遍历不同的聚合结构提供一个统一的接口 其实就是为方便遍历数据服务,像JDK的内置迭代器,就是采用的这种模式。 2.UML表示 迭代器模式主要有以下的角色构成: 2.1迭代器角色:定义遍历元素所需要的方法。 2.2具体迭代角色:实现迭代器接口中定义的方法,完成集合的迭代。 2.3容器角色:一个接口,提供iterator()方法,对比于java中的Collection接口、List接口、Set接口等。 2.4具体容器角色 抽象容器的具体实现类,比如:List接口中的ArrayList、LinkedList等。 具体的UML示意图如下: ![20180217164145764][] 3.代码实现 下面我们通过一个例子来对这个设计模式进行讲解: 首先,我们定义一个迭代器的接口: public interface MyIterator { void first(); void next(); boolean hasNext(); boolean isFirst(); boolean isLast(); Object getCurrentObj(); } 实现具体的迭代器: public class ConcreateIterator implements MyIterator{ private List list; private int cursor; public ConcreateIterator(List list) { this.list = list; } @Override public void first() { cursor=0; } @Override public void next() { if (cursor<list.size()){ cursor++; } } @Override public boolean hasNext() { if (cursor<list.size()){ return true; } return false; } @Override public boolean isFirst() { return cursor==0?true:false; } @Override public boolean isLast() { return cursor == (list.size() - 1) ? true : false; } @Override public Object getCurrentObj() { return list.get(cursor); } } 定义容器角色: public interface MyAggregate \{ void addObject(Object object); void removeObject(Object object); MyIterator createIterator(); \} 具体容器类: public class ConcreteMyAggregate implements MyAggregate{ private List<Object> list; public ConcreteMyAggregate(List<Object> list) { this.list = list; } @Override public void addObject(Object object){ this.list.add(object); } @Override public void removeObject(Object object){ this.list.remove(object); } /**获取迭代器*/ @Override public MyIterator createIterator(){ return new ConcreateIterator(list); } } 4.总结 通过迭代器模式,简化了遍历的方式,由于迭代器内部已经实现了迭代算法,所以我们不需要了解遍历的算法,使得代码的封装性比较好。 下面给出代码: https://github.com/MemoryExplosion/design\_pattern\_review/tree/master/src/java/iterator [20180217164145764]: /images/20220531/3e897db213de419cb3175cc4f044e23f.png
相关 迭代器模式 1.使用场景: 1.1访问一个聚合对象的内容而无需暴露它的内部表示 1.2支持对聚合对象的多种遍历 1.3为遍历不同的聚合结构提供一个统一的接口 其实就是为方便 蔚落/ 2022年05月31日 09:15/ 0 赞/ 239 阅读
相关 迭代器模式 [迭代器模式][Link 1] > Provides a way to access the elements of an aggregate object withou 刺骨的言语ヽ痛彻心扉/ 2022年05月30日 08:22/ 0 赞/ 267 阅读
相关 迭代器模式 迭代器模式 一、概述 1. 提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示。又称为:游标cursor模式 2. 聚合对象:存储数据 , 曾经终败给现在/ 2022年04月18日 06:26/ 0 赞/ 298 阅读
相关 迭代器模式 迭代器模式遍历集合的成熟模式,迭代器模式的关键是将遍历集合的任务交给一个叫做迭代器的对象,它的工作时遍历并选择序列中的对象,而客户端程序员不必知道或关心该集合序列底层的 深藏阁楼爱情的钟/ 2022年03月11日 04:44/ 0 赞/ 259 阅读
相关 迭代器模式 在软件开发中,可以存储多个成员对象的类称为聚合类(Aggregate Classes),对应的对象称为聚合对象。迭代器模式可以让客户端在无须了解聚合对象的内部结构的情况下,即可 深碍√TFBOYSˉ_/ 2021年10月15日 09:33/ 0 赞/ 404 阅读
相关 迭代器模式 用途 -------------------- 迭代器模式 (Iterator) 提供一种方法顺序访问一个聚合对象中各个元素,而又 不暴露该对象的内部表示。 迭代器模式 港控/mmm°/ 2021年09月26日 15:52/ 0 赞/ 495 阅读
相关 迭代器模式 迭代器模式:提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部元素; 为遍历的对象提供一个如开始、下一个、是否结束、当前哪一项等统一的接口。 优点: 1、它 柔光的暖阳◎/ 2021年09月17日 02:10/ 0 赞/ 419 阅读
相关 迭代器模式 16.迭代器模式 ![70][] class Program { static void Main(string[] a 雨点打透心脏的1/2处/ 2021年09月17日 00:04/ 0 赞/ 502 阅读
相关 迭代器模式 一 点睛 定义 提供一个对象来顺序访问聚合对象中的一系列数据,而不暴露聚合对象的内部表示。 二 结构 迭代器模式主要包含以下角色: 抽象聚合(Aggre 系统管理员/ 2021年07月25日 01:50/ 0 赞/ 477 阅读
相关 迭代器模式 代器模式(Iterator Pattern)是 Java 和 .Net 编程环境中非常常用的设计模式。这种模式用于顺序访问集合对象的元素,不需要知道集合对象的底层表示。 ... 小灰灰/ 2020年06月13日 05:39/ 0 赞/ 798 阅读
还没有评论,来说两句吧...