<b>深化浅出Java筹划情势之迭代器情势</b>[Java编程]
本文“<b>深化浅出Java筹划情势之迭代器情势</b>[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
1、引言
迭代这个名词关于熟习Java的人来说绝对不陌生.我们常常利用JDK供应的迭代接口举行java collection的遍历:
Iterator it = list.iterator();
while(it.hasNext()){
//using “it.next();”do some businesss logic
}
而这就是关于迭代器情势利用很好的例子.
2、定义与构造
迭代器(Iterator)情势,又叫做游标(Cursor)情势.GOF给出的定义为:供应一种办法拜候一个容器(container)对象中各个元素,而又不需表露该对象的内部细节.
从定义可见,迭代器情势是为容器而生.很明显,对容器对象的拜候必定触及到遍历算法.你可以一股脑的将遍历办法塞到容器对象中去;大概根本不去供应什么遍历算法,让利用容器的人自己去实现去吧.这两种情形仿佛都可以办理问题.
但是在前一种情形,容器承受了过量的功效,它不但要负责自己“容器”内的元素保护(增添、删除等等),并且还要供应遍历自身的接口;并且由于遍历状况保存的问题,不能对同一个容器对象同时举行多个遍历.第二种方法倒是费事,却又将容器的内部细节原形毕露.
而迭代器情势的呈现,很好的办理了上面两种情形的弊端.先来看下迭代器情势的真面目吧.
迭代器情势由以下角色构成:
1)迭代器角色(Iterator):迭代器角色负责定义拜候和遍历元素的接口.
2)具体迭代器角色(Concrete Iterator):具体迭代器角色要实现迭代器接口,并要记录遍历中的当前位置.
3)容器角色(Container):容器角色负责供应成立具体迭代器角色的接口.
4)具体容器角色(Concrete Container):具体容器角色实现成立具体迭代器角色的接口??这个具体迭代器角色于该容器的构造相关.
迭代器情势的类图以下:
从构造上可以看出,迭代器情势在客户与容器之间加入了迭代器角色.迭代器角色的加入,便可以很好的避免容器内部细节的表露,并且也使得计划标记“单一职责原则”.
注意,在迭代器情势中,具体迭代器角色和具体容器角色是耦合在一同的??遍历算法是与容器的内部细节精密相关的.为了使客户程序从与具体迭代器角色耦合的窘境中脱离出来,避免具体迭代器角色的改换给客户程序带来的改正,迭代器情势抽象了具体迭代器角色,使得客户程序更具普通性和重用性.这被称为多态迭代.
以上是“<b>深化浅出Java筹划情势之迭代器情势</b>[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |