23种设计模式(13):迭代器模式-java开发java经验技巧

23种设计模式(13):迭代器模式-java开发java经验技巧

ID:30749853

大小:100.50 KB

页数:4页

时间:2019-01-03

23种设计模式(13):迭代器模式-java开发java经验技巧_第1页
23种设计模式(13):迭代器模式-java开发java经验技巧_第2页
23种设计模式(13):迭代器模式-java开发java经验技巧_第3页
23种设计模式(13):迭代器模式-java开发java经验技巧_第4页
资源描述:

《23种设计模式(13):迭代器模式-java开发java经验技巧》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、23种设计模式(13):迭代器模式-编程开发技术23种设计模式(13):迭代器模式原文出处:卡奴达摩的专栏定义:提供一种方法访问一个容器对象中各个元索,而又不暴霜该对象的内部细节。类型:行为类模式类图:如果要问java中使用最多的一种模式,答案不是单例模式,也不是工厂模式,更不是策略模式,而是迭代器模式,先来看一段代码吧:publicstaticvoidprint(Collectioncol1){Iteratorit二coll,itcrator();wh订e(it.hasNext()){Stringstr=(String)it.n

2、ext();System,out.printin(str);}这个方法的作用是循环打印一个字符串集合,里而就用到了迭代器模式,java语言己经完整地实现了迭代器模式‘Iterator翻译成汉语就是迭代器的意思。提到迭代器,首先它是与集合相关的,集合也叫聚集、容器等,我们可以将集合看成是一个口J以包容对象的容器,例如List,Set,Map,甚至数组都口J以叫做集合,而迭代器的作用就是把容器中的对象一个一个地遍历出來。迭代器模式的结构•抽象容器:i般是一个接口,提供一个iterator()方法,例如java屮的Collection接

3、口,List接口,Set接口等。•具体容器:就是抽象容器的具体实现类,比如List接口的有序列表实现ArrayList,List接口的链表实现LinkList,Set接口的哈希列表的实现HashSct等。•抽象迭代器:定义遍历元素所需要的方法,一-般來说会有这么三个方法:取得第一个元素的方法first(),収得下一个沅素的方法next(),判断是否遍历结朿的方法isDone()(或者叫hasNext()),移出当前对象的方法remove(),•迭代器实现:实现迭代器接口中定义的方法,完成集合的迭代。代码实现interfaccIte

4、rator{publicObjectnext();publicbooleanhasNext();}classConcrete!teratorimplementsIterator{privatcListlist二newArrayList();privateintcursor=0;publicConcretelterator(Listlist){this.list二list;}publicboolcanhasNext(){if(cursor==list・sizeO){returnfalse;}returntrue;}publicObj

5、ectnext(){Objectobj=null;if(this.hasNext()){obj二this.list・get(cursor++);}returnobj;}}interfaceAggregate{publicvoidadd(Objcctobj);publicvoidremove(Objectobj);publicIteratoriterator();}classConcreteAggregateimplementsAggregate{privatcListlist二newArrayList();publicvoidad

6、d(Objectobj){list・add(obj);publicIteratoriterator(){returnnewConcreteIterator(list);}publicvoidremove(Objectobj){1ist.remove(obj);}}publicclassClient{publicstaticvoidmain(String[]args){Aggregateag二newConcreteAggregate();ag.add(z,小明〃);ag.add(z,小红〃);ag.addC小刚〃);Iterator

7、it=ag.iterator();while(it.hasNext()){Stringstr二(String)it.next();Systcm.out.printin(str);}}}上面的代码中,Aggregate是容器类接口,大家可以想象一下Collection,List,Set等,Aggregate就是他们的简化版,容器类接口小主要有三个方法:添加对象方法add、删除对象方法removex取得迭代器方法iterator。Iterator是迭代器接口,主要有两个方法:取得迭代对象方法next,判断是否迭代完成方密hasNext

8、,大家可以对比java.util.List和java.util.Tterator两个接口自行思考。迭代器模式的优缺点迭代器模式的优点冇:•简化了遍历方式,对于对彖集合的遍历,还是比较麻烦的,对于数组或者冇序列表,我们询可以通过游标来取得,但用户需要

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。