1. 程式人生 > >設計模式之叠代器模式 Iterator

設計模式之叠代器模式 Iterator

b- 獲取 nts bject private 設計模式 http ren ==

技術分享

技術分享

技術分享

代碼實現

技術分享
public interface MyIterator {

    void first();           //將遊標指向第一個元素
    void next();            //將遊標指向下一個元素
    boolean hasNext();     //判斷是否存在下一個元素
    
    boolean isFirst();
    boolean isLast();
    
    Object getCurrentObj();   //獲取當前遊標指向的對象
}
自定義叠代器接口 技術分享
/**
 * 自定義聚合類
 * @author bzhx
 * 2017年3月14日
 
*/ public class ConcreteMyAggregate { private List<Object> list = new ArrayList<Object>(); public List<Object> getList() { return list; } public void setList(List<Object> list) { this.list = list; } public void addObject(Object obj){
this.list.add(obj); } public void removeObject(Object obj){ this.list.remove(obj); } //獲得叠代器 public MyIterator createIterator(){ return new ConcreteIterator(); } //使用內部類定義叠代器,可以直接使用外部類的屬性 public class ConcreteIterator implements MyIterator{
private int cursor; //定義遊標用於記錄遍歷時的位置 @Override public void first() { cursor = 0; } @Override public void next() { if(cursor<list.size()){ cursor++; } } @Override public boolean hasNext() { if(cursor<list.size()){ return true; } return false; } @Override public boolean isFirst() { return cursor==0?true:false; } @Override public boolean isLast() { return cursor==(list.size()-1)?true:false; } @Override public Object getCurrentObj() { return list.get(cursor); } } }
自定義聚合類 技術分享
public class Client {
    public static void main(String[] args) {
        ConcreteMyAggregate cma = new ConcreteMyAggregate();
        cma.addObject("aa");
        cma.addObject("bb");
        cma.addObject("cc");
        
        MyIterator iter = cma.createIterator();
        while (iter.hasNext()) {
            System.out.println(iter.getCurrentObj());
            iter.next();
        }
    }
}
測試調用

設計模式之叠代器模式 Iterator