打字猴:1.700467377e+09
1700467377
1700467378 public class Client{
1700467379
1700467380 public static void main(String[]args){
1700467381
1700467382 //声明出容器
1700467383
1700467384 Aggregate agg=new ConcreteAggregate();
1700467385
1700467386 //产生对象数据放进去
1700467387
1700467388 agg.add(“abc”);
1700467389
1700467390 agg.add(“aaa”);
1700467391
1700467392 agg.add(“1234”);
1700467393
1700467394 //遍历一下
1700467395
1700467396 Iterator iterator=agg.iterator();
1700467397
1700467398 while(iterator.hasNext()){
1700467399
1700467400 System.out.println(iterator.next());
1700467401
1700467402 }
1700467403
1700467404 }
1700467405
1700467406 }
1700467407
1700467408 简单地说,迭代器就类似于一个数据库中的游标,可以在一个容器内上下翻滚,遍历所有它需要查看的元素。
1700467409
1700467410
1700467411
1700467412
1700467413 设计模式之禅 [:1700454010]
1700467414 设计模式之禅 20.3 迭代器模式的应用
1700467415
1700467416 我们在例子中使用了迭代器模式后为什么使原本简单的应用变得复杂起来了呢?那是因为我们在简单的应用中使用了迭代器,在哪?请看代码清单20-3,注意这段话:for(IProject project:projectList),它为什么能够运行起来?还不是因为ArrayList已经实现了iterator()方法,我们才能如此简单地应用。
1700467417
1700467418 从JDK 1.2版本开始增加java.util.Iterator这个接口,并逐步把Iterator应用到各个聚集类(Collection)中,我们来看JDK 1.5的API帮助文件,你会看到有一个叫java.util.Iterable的接口,看看有多少个接口继承了它:BeanContext,BeanContextServices,BlockingQueue<E>,Collection<E>,List<E>,Queue<E>,Set<E>,SortedSet<E>,再看看有它多少个实现类:AbstractCollection,AbstractList,AbstractQueue,AbstractSequentialList,AbstractSet,ArrayBlockingQueue,ArrayList,AttributeList,BeanContextServicesSupport,BeanContextSupport,ConcurrentLinkedQueue,CopyOnWriteArrayList,CopyOnWriteArraySet,DelayQueue,EnumSet,HashSet,JobStateReasons,LinkedBlockingQueue,LinkedHashSet,LinkedList,PriorityBlockingQueue,PriorityQueue,RoleList,RoleUnresolvedList,Stack,SynchronousQueue,TreeSet,Vector,基本上我们经常使用的类都在这个表中了,也正是因为Java把迭代器模式已经融入到基本API中了,我们才能如此轻松、便捷。
1700467419
1700467420 我们再来来看看Iterable接口。java.util.Iterable接口只有一个方法:iterator(),也就说,通过iterator()这个方法去遍历聚集类中的所有方法或属性,基本上现在所有的高级语言都有Iterator这个接口或者实现,Java已经把迭代器给我们准备好了,我们再去写迭代器,就有点多余了。所以呀,这个迭代器模式也有点没落了,基本上很少有项目再独立写迭代器了,直接使用Collection下的实现类就可以完美地解决问题。
1700467421
1700467422 迭代器现在应用得越来越广泛了,甚至已经成为一个最基础的工具。一些大师级人物甚至建议把迭代器模式从23个模式中删除,为什么呢?就是因为现在它太普通了,已经融入到各个语言和工具中了,比如PHP中你能找到它的身影,Perl也有它的存在,甚至是前台的页面技术AJAX也可以有它的出现(如在Struts2中就可以直接使用iterator)。基本上,只要你不是在使用那些古董级(指版本号)的编程语言的话,都不用自己动手写迭代器。
1700467423
1700467424
1700467425
1700467426
[ 上一页 ]  [ :1.700467377e+09 ]  [ 下一页 ]