前言:
参考图书:软件设计模式与体系结构
参考博客:https://www.cnblogs.com/wanson/articles/9277813.html
正题:
迭代器(iterator)有时又称游标(cursor)是程序设计的软件设计模式,可在容器(container,例如链表或阵列)上遍访的接口,设计人员无需关心容器的内容。
代码示例:
1 | MyIterator(interface) |
2 | MyConcreteIterator(class implements MyIterator) |
3 | MyList(interface) |
4 | MyConcreteList(class implements MyList) |
具体UML类图如下:
具体代码:
MyIterator
package cn.gxm.mode;
public interface MyIterator {
public boolean hasNext();
public Object next();
}
MyConcreteIterator
package cn.gxm.mode;
public class MyConcreteIterator implements MyIterator {
private MyList list;
private int index;
public MyConcreteIterator(MyList list) {
this.list = list;
}
@Override
public boolean hasNext() {
if(index < list.getSize()) {
return true;
}
return false;
}
@Override
public Object next() {
return list.get(index++);
}
}
MyList
package cn.gxm.mode;
public interface MyList {
public int getSize();
public Object get(int index);
public void add(Object object);
public MyIterator iterateor();
}
myConcreteList
package cn.gxm.mode;
public class myConcreteList implements MyList {
private Object data[] = new Object[100];
private int index;
private int size;
@Override
public int getSize() {
return size;
}
@Override
public Object get(int index) {
return data[index];
}
@Override
public void add(Object object) {
data[index++] = object;
size++;
}
@Override
public MyIterator iterateor() {
return new MyConcreteIterator(this);
}
}
Client
package cn.gxm.mode;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import org.junit.Test;
public class Client {
public static void main(String[] args) {
myConcreteList myList = new myConcreteList();
myList.add("str1");
myList.add("str2");
myList.add("str3");
MyIterator myIterator = myList.iterateor();
while(myIterator.hasNext()) {
System.out.println(myIterator.next());
}
}
}