zoukankan      html  css  js  c++  java
  • 设计模式之迭代器模式 Iterator

     代码实现

    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();
            }
        }
    }
    测试调用
  • 相关阅读:
    (第二天)原型、继承
    (第一天)包装对象、作用域、创建对象
    你欺骗了我,可选参数必须位于所有参数最后
    反射之动态创建对象
    异步编程
    前端性能优化方法
    性能瓶颈分析方法
    性能测试应用领域
    <转>jmeter(十五)函数助手
    正则表达式基础知识
  • 原文地址:https://www.cnblogs.com/qingdaofu/p/7477948.html
Copyright © 2011-2022 走看看