- 论坛徽章:
- 0
|
迭代子模式(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 |
|