设计模式之Iterator(迭代器)的设计和使用

来源:互联网 发布:linux 多进程 信号 编辑:程序博客网 时间:2024/04/28 00:50

目的:

提供一种方法顺序访问或者遍历一个聚合对象中的各个元素,且不希望暴露该对象的内部结构。

一、设计

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();        }


0 0
原创粉丝点击