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

    迭代器模式(Iterator):提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。

    package designMode.iterator;
    
    interface Aggregate {
        
        Iterator createIterator();
    }
    package designMode.iterator;
    
    interface Iterator {
        
        Object first();
        
        Object next();
        
        boolean isDone();
        
        Object currentItem();
    }
    package designMode.iterator;
    
    import java.util.ArrayList;
    import java.util.List;
    
    class ConcreteAggregate implements Aggregate{
        
        private List<Object> items = new ArrayList<Object>();
    
        @Override
        public Iterator createIterator() {
            return new ConcreteIterator(this);
        }
        
        public int count(){
            return items.size();
        }
        
        public Object getCurrent(int index){
            return items.get(index);
        }
        public void setCurrent(int index,Object value){
            items.add(index, value);
        }
    }
    package designMode.iterator;
    
    class ConcreteIterator implements Iterator{
        
        private ConcreteAggregate aggregate;
        private int current;
        
        public  ConcreteIterator(ConcreteAggregate aggregate) {
            this.aggregate = aggregate;
        }
    
        @Override
        public Object first() {
            return aggregate.getCurrent(0);
        }
    
        @Override
        public Object next() {
            Object ret = null;
            current++;
            if(current<aggregate.count())
                ret = aggregate.getCurrent(current);
            return ret;
        }
    
        @Override
        public boolean isDone() {
            return current>=aggregate.count()?true:false;
        }
    
        @Override
        public Object currentItem() {
            return aggregate.getCurrent(current);
        }
    
    }
    package designMode.iterator;
    
    class Test {
        public static void main(String[] args) {
            ConcreteAggregate a = new ConcreteAggregate();
            a.setCurrent(0, "张三");
            a.setCurrent(1, "李四");
            a.setCurrent(2, "王五");
            a.setCurrent(3, "马六");
            a.setCurrent(4, "田七");
            a.setCurrent(5, "茅八");
            Iterator iter = new ConcreteIterator(a);
            Object firstItem = iter.first();
            System.out.println("第一个是:"+firstItem);
            while(!iter.isDone()){
                System.out.println(iter.currentItem()+"已通过!");
                iter.next();
            }
        }
    }
  • 相关阅读:
    Selenium快速入门(下)
    Selenium快速入门(上)
    Python中yield和yield from的用法
    Python多进程
    Spring Cloud微服务安全实战_3-5_API安全之常见问题
    Spring Cloud微服务安全实战_3-3_API安全之流控
    Spring Cloud微服务安全实战_3-2_第一个API及注入攻击防护
    Spring Cloud微服务安全实战_3-1_API安全 常见的安全机制
    Spring Cloud微服务安全实战_2-1_开发环境
    Spring Cloud微服务安全实战_1-1_导学
  • 原文地址:https://www.cnblogs.com/lxcmyf/p/7418002.html
Copyright © 2011-2022 走看看