迭代器模式的定义,就是提供一种方法访问内聚对象的各个元素信息,然而不暴露该对象的内部表示
其实在 Java或者是C#这样的语言当中已经都把迭代器定义在了内部中,注意:(有集合的地方就有迭代器)
// Java内部里面定制好了迭代器,例如:
List<String> list = new ArrayList<String>();
list.add("111");
list.add("222");
list.add("333");
java.util.Iterator<String> iterator2 = list.iterator();
while (iterator2.hasNext()) {
System.out.println(iterator2.next());
}
运行结果:
模拟添加数据,使用迭代器模式完成:
package com.oop.demo1;
/**
* 定义迭代器抽象类
* @author Liudeli
*
*/
public abstract class Iterator {
/**
* 查找下一个
* @return
*/
public abstract Object next();
/**
* 下一个是否存在
* @return
*/
public abstract boolean hasNext();
}
package com.oop.demo1;
import java.util.ArrayList;
import java.util.List;
public class IteratorImpl extends Iterator{
private List<String> list = new ArrayList<String>();
private int cursor = 0;
public IteratorImpl(List<String> list) {
this.list = list;
}
public boolean hasNext() {
if(cursor==list.size()){
return false;
}
return true;
}
public Object next() {
Object obj = null;
if(this.hasNext()){
obj = this.list.get(cursor++);
}
return obj;
}
}
package com.oop.demo1;
/**
* 抽象出存储数据的抽象类
* @author Liudeli
*
*/
public abstract class Aggregate {
/**
* 抽象添加的行为
* @param object
*/
public abstract void add(Object object);
/**
* 得到迭代器,迭代器可以去迭代数据
* @return
*/
public abstract Iterator iterator();
}
package com.oop.demo1;
import java.util.ArrayList;
import java.util.List;
public class AggregateImpl extends Aggregate{
private List list = new ArrayList();
public void add(Object obj) {
list.add(obj);
}
public Iterator iterator() {
return new IteratorImpl(list);
}
}
/**
* 测试程序(迭代器模式)
* @author Liudeli
*
*/
public class Main {
public static void main(String[] args) {
/*
// Java内部里面定制好了迭代器,例如:
List<String> list = new ArrayList<String>();
list.add("111");
list.add("222");
list.add("333");
java.util.Iterator<String> iterator2 = list.iterator();
while (iterator2.hasNext()) {
System.out.println(iterator2.next());
}
*/
Aggregate aggregate = new AggregateImpl();
aggregate.add("旺财");
aggregate.add("痞子阿三");
aggregate.add("小黄");
aggregate.add("史珍香");
Iterator iterator = aggregate.iterator();
while (iterator.hasNext()) {
String name = iterator.next().toString();
System.out.println(name);
}
}
运行结果:
谢谢大家的观看,更多精彩技术博客,会不断的更新,请大家访问,
刘德利CSDN博客, http://blog.csdn.net/u011967006