免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1247 | 回复: 0
打印 上一主题 下一主题

Java与模式 关于Iterator Design pattern(一) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-10-14 10:00 |只看该作者 |倒序浏览

   迭代子模式(Iterator),将聚集类里面的数据类型隐藏。迭代子模式最主要的是要隐藏聚集内部的表象,
并且扩展,当聚集类里面的数据存储结构变化的时候可以使用迭代子来消除这种变化,在客户端调用的时候,完全看不出里面的数据类型结构。
   迭代子模式同样有两种不同的遍历,有一种是开放宽接口,一种是开放窄接口。对外界开放宽接口的时候,意思就是说对外界不隐藏内部结构,外界(client)可以自己遍历,也可以使用迭代子模式提供的迭代器。


   
首先展示的是:开放宽接口的。将依赖Iterator      
/**
* Aggregate 类在这里主要是提供iterator这个方法。让有聚集的类实现它。将聚集内部的类型隐藏起来。
* 对于BookShelf这个聚集类也有一个对应的BookShelfIterator;BookShelfVector也有一个对应的BookShelfIterator
* @author Administrator
*
*/
public interface Aggregate {
   public abstract Iterator iterator();
}
除了Aggregate类,还有Iterator类。
Iterator这个类主要适用来遍历的。
public interface Iterator {
    public abstract boolean hasNext();
    public abstract Object next();
}
一般来说如果我们的聚集类里面使用数组的话。我们会有一个配套的数组遍历器,ArrayAggregate实现Aggrehate接口,对应的ArrayIterator来实现Iterator接口,两者之间相互依赖。
  用我自己的话就是说:我们平时都是使用
/**
*这里的vector我们是指Vector类型。
*/
for(int i=0;ivector.size();i++){
//....
}
使用Iterator模式就是将vector这个的类型隐藏。我们遍历的话。使用这种方式:

/**
*aggregate是实现aggregate类的子类
*的变量,
*
*/
Iterator it=aggregate.iterator();
while(it.hasNext()){
  //..该干嘛去救干嘛去。。
   it.next();
}



本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/66973/showart_1296870.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP