類圖
設計模式--疊代器模式 源碼
AbstractIterator.java 抽象疊代器
package com.iterator;
public abstract class AbstractIterator {
//抽象疊代器類
//移到下一個元素
public abstract void next();
//移到上一個元素
public abstract void previous();
//擷取上一個元素傳回object
public abstract Object getPrevious();
//擷取下一個元素放回OBJECT
public abstract Object getNext();
//是否是第一個元素boolean
public abstract boolean isNext();
//是否是最後一個元素
public abstract boolean isFrist();
}
ProducteIterator.java
package com.iterator;
import java.util.ArrayList;
import java.util.List;
public class ProducteIterator extends AbstractIterator {
private List<Object> objectList = new ArrayList<Object>();
private int cursor1; //遊标
private int cursor2; //遊标2
public ProducteIterator(ConcreteObjectList obj) {
// TODO Auto-generated constructor stub
this.objectList=obj.getObjectList();
cursor1=0;
cursor2=objectList.size()-1;
}
@Override
public void next() {
// TODO Auto-generated method stub
if(cursor1<objectList.size()) {
cursor1++;
}
}
@Override
public void previous() {
// TODO Auto-generated method stub
if(cursor2>-1) {
cursor2--;
}
}
@Override
public Object getPrevious() {
// TODO Auto-generated method stub
return objectList.get(cursor2);
}
@Override
public Object getNext() {
// TODO Auto-generated method stub
return objectList.get(cursor1);
}
@Override
public boolean isNext() {
// TODO Auto-generated method stub
return (cursor1==objectList.size());
}
@Override
public boolean isFrist() {
// TODO Auto-generated method stub
return (cursor2==-1);
}
}
AbstractObjectList.java 抽象聚合對象
package com.iterator;
import java.util.*;
public abstract class AbstractObjectList {
//建立一個object 的arraylist集合
protected List<Object> objectList = new ArrayList<Object>();
public AbstractObjectList(List<Object> list) {
// TODO Auto-generated constructor stub
this.objectList=list;
}
//添加方法。
public void AddObject(Object o) {
this.objectList.add(o);
}
//删除方法。
public void RemoveObject(Object o) {
this.objectList.remove(o);
}
//擷取到list
public List<Object> getObjectList(){
return objectList;
}
//擷取arrayList
//擷取疊代器的工廠方法
public abstract AbstractIterator createIterator();
}
ConcreteObjectList.java 具體聚合對象
package com.iterator;
import java.util.*;
public abstract class AbstractObjectList {
//建立一個object 的arraylist集合
protected List<Object> objectList = new ArrayList<Object>();
public AbstractObjectList(List<Object> list) {
// TODO Auto-generated constructor stub
this.objectList=list;
}
//添加方法。
public void AddObject(Object o) {
this.objectList.add(o);
}
//删除方法。
public void RemoveObject(Object o) {
this.objectList.remove(o);
}
//擷取到list
public List<Object> getObjectList(){
return objectList;
}
//擷取arrayList
//擷取疊代器的工廠方法
public abstract AbstractIterator createIterator();
}
Client.java 測試類
package com.iterator;
import java.util.ArrayList;
import java.util.List;
public class Client {
public static void main(String[] args) {
List<Object> list1 =new ArrayList<Object>();
AbstractObjectList list = new ConcreteObjectList(list1);
list.AddObject("20193901");
list.AddObject("20193902");
list.AddObject("20193903");
list.AddObject("20193904");
list.AddObject("20193905");
list.AddObject("20193906");
list.AddObject("20193907");
list.AddObject("20193908");
list.AddObject("20193909");
list.AddObject("20193910");
list.AddObject("20193911");
list.AddObject("20193912");
AbstractIterator iterator =list.createIterator();
System.out.println("正向周遊");
while(!iterator.isNext()) {
System.out.print(iterator.getNext()+"\n");
iterator.next();
}
//反向周遊
System.out.println("反向周遊");
while(!iterator.isFrist()) {
System.out.print(iterator.getPrevious()+"\n");
iterator.previous();
}
}
}
測試截圖
設計模式--疊代器模式