迭代器模式 港控/mmm° 2021-09-26 15:52 548阅读 0赞 用途 -------------------- 迭代器模式 (Iterator) 提供一种方法顺序访问一个聚合对象中各个元素,而又 不暴露该对象的内部表示。 迭代器模式是一种 行为型模式。 结构 -------------------- ![70][] 图-迭代器模式结构图 Iterator : 定义访问元素的接口。 ![复制代码][copycode.gif] interface Iterator \{ public Object first(); public Object next(); public boolean isDone(); public Object currentItem(); \} ![复制代码][copycode.gif] ConcreteIterator : 实现 Iterator 接口。记录当前访问的元素在集合中的位置信息。 ![复制代码][copycode.gif] class ConcreteIterator implements Iterator \{ private int current = 0; private ConcreteAggregate aggregate; public ConcreteIterator(ConcreteAggregate aggregate) \{ this.aggregate = aggregate; \} @Override public Object first() \{ return aggregate.get(0); \} @Override public Object next() \{ current++; if (current < aggregate.size()) \{ return aggregate.get(current); \} return null; \} @Override public boolean isDone() \{ return (current >= aggregate.size()) ? true : false; \} @Override public Object currentItem() \{ return aggregate.get(current); \} \} ![复制代码][copycode.gif] Aggregate : 定义创建 Iterator 对象的接口。 interface Aggregate \{ public Iterator CreateIterator(); \} ConcreteAggregate : 实现 Iterator 接口,返回一个合适的 ConcreteIterator 实例。 ![复制代码][copycode.gif] class ConcreteAggregate implements Aggregate \{ private List<Object> items = new ArrayList<Object>(); @Override public Iterator CreateIterator() \{ return new ConcreteIterator( this); \} public int size() \{ return items.size(); \} public Object get( int index) \{ return items.get(index); \} public void set( int index, Object element) \{ items.set(index, element); \} public void add(Object element) \{ items.add(element); \} \} ![复制代码][copycode.gif] 测试代码 ![复制代码][copycode.gif] public class IteratorPattern \{ public static void main(String\[\] args) \{ ConcreteAggregate aggregate = new ConcreteAggregate(); aggregate.add("张三"); aggregate.add("李四"); aggregate.add("王五"); aggregate.add("赵六"); Iterator iter = new ConcreteIterator(aggregate); Object item = iter.first(); System.out.println("第一个人是:" + item); System.out.println("所有人的名单是:"); while (!iter.isDone()) \{ System.out.println(iter.currentItem()); iter.next(); \} \} \} ![复制代码][copycode.gif] 运行结果 ![复制代码][copycode.gif] 第一个人是:张三 所有人的名单是: 张三 李四 王五 赵六 ![复制代码][copycode.gif] 总结来说:迭代器模式就是分离了集合对象的遍历行为,抽象出一个迭代器类来负责,这样既可以做到不暴露集合的内部结构,又可以让外部代码透明地访问集合内部的数据,迭代器模式在访问数组、集合、列表等数据结构时,非常普遍的应用。 应用场景 -------------------- 访问一个聚合对象的内容而无需暴露它的内部表示。 支持对聚合对象的多种遍历。 为遍历不同的聚合结构提供一个统一的接口。 [70]: /images/20210923/7d2fd263d23240e0b75b633a1c1586fa.png [copycode.gif]: /images/20210923/26b826a95b8d4fbfbd610b32abea60d0.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 赞/ 443 阅读
相关 迭代器模式 用途 -------------------- 迭代器模式 (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 赞/ 540 阅读
相关 迭代器模式 一 点睛 定义 提供一个对象来顺序访问聚合对象中的一系列数据,而不暴露聚合对象的内部表示。 二 结构 迭代器模式主要包含以下角色: 抽象聚合(Aggre 系统管理员/ 2021年07月25日 01:50/ 0 赞/ 511 阅读
相关 迭代器模式 代器模式(Iterator Pattern)是 Java 和 .Net 编程环境中非常常用的设计模式。这种模式用于顺序访问集合对象的元素,不需要知道集合对象的底层表示。 ... 小灰灰/ 2020年06月13日 05:39/ 0 赞/ 823 阅读
还没有评论,来说两句吧...