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

  • 相关阅读:
    1.13 Flask
    1.12 Flask 复习
    1.11 flask
    1.10 flask
    1.9 flask
    1.8 flask 路由
    sql server存储过程
    Ajax学习笔记
    随机密码字典生成器
    jRazor
  • 原文地址:https://www.cnblogs.com/betterwgo/p/15238010.html
Copyright © 2011-2022 走看看