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

    迭代器模式提供了顺序访问集合对象中的各种元素,而不暴露该对象的内部结构的方法。

    image

    (1)定义集合

    public interface Collection{
        public Iterator iterator();
        public Object get(int i);
        public boolean add(Object object);
        public int size();
    }
    
    public class ListCollection implements Collection{
        public List list = new ArrayList();
        @Override
        public Iterator iterator(){
            return new ConcreteIterator(this);
        }
        @Override
        public Object get(int i){
            return list.get(i);
        }
        @Override
        public boolean add(Object object){
            list.add(object);
            return true;
        }
        @Override
        public int size(){
            return list.size();
        }
    }

    (2)定义迭代器

    public interface Iterator{
        public Object prev();
        public Object next();
        public boolean hasNext();
    }
    
    public class ConcreIterator implements Iterator{
        private Collection collection;
        private int pos = -1;
        public ConcreIterator(Collection collection){
            this.collection = collection;
        }
        @Override
        public Object prev(){
            if(pos>0){
                pos--;
            }
            return collection.get(pos);
        }
        @Override
        public Object next(){
            if(pos<collection.size()-1){
                pos++;
            }
            return collection.get(pos);
        }
        @Override
        public boolean hasNext(){
            if(pos<collection.size()-1){
                return true;
            }else {
                return false;
            }
        }
    }

    (3)使用迭代器模式

    public static void main(String[] args){
        Collection collection = new ListCollection();
        collection.add("obj1");
        Iterator it = collection.iterator();
        while (it.hasNext()){
            logger.info(it.next());
        }
    }

  • 相关阅读:
    SQL having 子句
    sqlserver2008 R2 创建作业(定时任务)
    3步完成chrome切换搜索引擎
    http模拟请求工具
    网页自动加载进度条插件
    span设为inline-block之后,未包含文字时下面会多出一条空白问题
    记一次特殊的下载字体方法
    团队冲刺第十三天
    团队冲刺第十二天
    人月神话03
  • 原文地址:https://www.cnblogs.com/betterwgo/p/15238010.html
Copyright © 2011-2022 走看看