1. 程式人生 > >設計模式之Iterator(迭代器)的設計和使用

設計模式之Iterator(迭代器)的設計和使用

目的:

提供一種方法順序訪問或者遍歷一個聚合物件中的各個元素,且不希望暴露該物件的內部結構。

一、設計

1. 因為是聚合物件,所以設計的這個類應該使用類似list這樣的結構體儲存聚合物件;

2.迭代器應該是通用的,適用於各種型別的聚合物件,所以設計的類應該是模板型別;

3.還需要對外提供統一的訪問介面,以及獲取當前元素,遞增到下一個元素,判斷是否末尾元素。

    interface MyIterator<T>{
         void next();
         boolean hasNext();
         T getItem();
    }
    public class Test<T>{
        
        private List<T> list = new ArrayList<T>();
        private int i = 0;
        public void add(T item){
            list.add(item);
        }
        public MyIterator getIterator(){
                return new TestIterator();

        }


        class TestIterator implements MyIterator<T>{
            public void next(){
                i++;
            }
            public boolean hasNext(){
                return (i >= list.size())? false:true;
            }
            public T getItem(){
                return list.get(i);
            }

        }
        
      }

二、使用
        Test<String> test = new Test<String>();
        test.add("1");
        test.add("2");
        test.add("3");
        test.add("4");
        test.add("5");
        MyIterator iterator = test.getIterator();
        while(iterator.hasNext()){
            String item = (String)iterator.getItem();
            Log.d(TAG,"item:"+item);
            iterator.next();
        }