参考网站
http://www.runoob.com/design-pattern/factory-pattern.html
什么是迭代器模式?
迭代器模式是Java和.Net编程环境中非常常用的设计模式。这种模式用户顺序访问集合对象的元素,而不需要知道集合对象的底层便是。
迭代器模式属于行为型模式
迭代器模式支持以不同的方式遍历一个聚合对象。简化了聚合类。在同一个聚合上可以有多个遍历。在迭代器模式中,增加新的聚合类和迭代器类都很方便无需修改原有代码。
下面的这个例子,就是对一块面包进行装饰。面包大同小异,但是它有不同的口味,如美式面包,法式面包等等。就是通过在同一块普通面包的基础上进行装饰,因为口味不同,有的加的东西又不一样。但是通过装饰器模式就能很好地解决这种问题。
步骤
创建接口.
Iterator.java 迭代器接口
public interface Iterator {
boolean hasNext();
Object next();
}
Container.java 不同类别接口
public interface Container {
public Iterator getIterator();
}
创建实现了Container接口的实体类。该类有实现了Iterator接口的内部类NameIterator。
NameRepositiory.java 类别实现
public class NameRepository implements Container {
public String names[] = { "Robert", "John", "Julie", "Lora" };
@Override
public Iterator getIterator() {
// TODO Auto-generated method stub
return new NameIterator();
}
// 内部类实现
private class NameIterator implements Iterator {
int index;
@Override
public boolean hasNext() {
return index < names.length;
}
@Override
public Object next() {
return this.hasNext() ? names[index++] : null;
}
}
}
使用NameRepository来获取迭代器,并打印名字。
Client.java 客户端
public class Client {
public static void main(String[] args) {
NameRepository nameRepository = new NameRepository();
for (Iterator iter = nameRepository.getIterator(); iter.hasNext();) {
String name = (String) iter.next();
System.out.println("Name:" + name);
}
}
}
输出验证。
Name : Robert
Name : John
Name : Julie
Name : Lora