博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设计模式学习三、迭代器模式
阅读量:5811 次
发布时间:2019-06-18

本文共 1084 字,大约阅读时间需要 3 分钟。

一、什么是迭代器模式

           提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示

二、使用场景

         通用的方法遍历集合元素

三、模式构成

              迭代器角色:定义遍历元素所需要的方法

              具体迭代器角色:实现迭代器接口的方法

              聚集类:Aggregate(抽象类)和ConcreteAggregate(具体聚集类)表示聚集类,是用来存储迭代器的数据。

              在Aggregate(抽象类)中有一个CreateIterator方法,用来获取迭代器

四、举个例子

            例子:jone与tony分别管理一家餐厅,两家餐厅宣布共同经营。jone负责早餐,tony负责午餐。两家只有一个服务员。 但是两家的菜单有所区别,jone的菜单用数组管理,tony用的是数组。这个服务员如何打印菜单更加方便。

            分析:如果使用传统的方式,服务员打印菜单的时候,会先用一个for循环打印jone数组的菜单,然后用另一个循环打印tony链表的菜单,而且这两者输出内容的代码基本相同(造成代码冗余)。这时候,就可以使用迭代器,用一种通用的方式,既可以打印jone的菜单,又可以打印tony的菜单 。 

      代码:

 

//抽象迭代器interface Iterator {    public boolean hasNext();    public Object next();}//具体迭代器class ArrayIterator implements  Iterator{    private  Object []items;    private int index=0;    private int max;    public ArrayIterator(Object[] items,int max) {        this.items = items;        this.max=max;    }    @Override    public boolean hasNext() {        if (items.length!=0&&index
0&&pos

五、补充

 

            java中,对于迭代器有自己的实现,像是list,set,map,collection都有实现好的迭代器。如果想要自己的集合使用迭代器,可以实现java中的Iterator接口。所以,我们不需要手工写一个Iterator接口

ps:渣渣菜鸟一个,如有不对,请指正~~~

      

   

 

转载于:https://www.cnblogs.com/GregZQ/p/8365282.html

你可能感兴趣的文章
poj3692
查看>>
python之信号量【Semaphore】
查看>>
html5纲要,细谈HTML 5新增的元素
查看>>
Android应用集成支付宝接口的简化
查看>>
[分享]Ubuntu12.04安装基础教程(图文)
查看>>
[Vim] 搜索模式(正则表达式)
查看>>
#HTTP协议学习# (二)基本认证
查看>>
Android开发之线性布局详解(布局权重)
查看>>
WCF
查看>>
django 目录结构修改
查看>>
win8 关闭防火墙
查看>>
Android实例-录音与回放(播放MP3)(XE8+小米2)
查看>>
CSS——(2)与标准流盒模型
查看>>
MYSQL 基本SQL语句
查看>>
C#中的Marshal
查看>>
linux命令:ls
查看>>
Using RequireJS in AngularJS Applications
查看>>
hdu 2444(二分图最大匹配)
查看>>
shell编程笔记六:实现ll命令
查看>>
【SAP HANA】关于SAP HANA中带层次结构的计算视图Cacultation View创建、激活状况下在系统中生成对象的研究...
查看>>