美文网首页Android开发经验谈Android开发Android技术知识
Android设计模式之(13)----迭代器模式

Android设计模式之(13)----迭代器模式

作者: Ch3r1sh | 来源:发表于2017-08-28 16:56 被阅读100次

    迭代器模式

    迭代器模式属于行为模式.

    主要用于解决对一个聚合对象中的所有元素的获取,但是同时又不会暴露该对象的内部细节。

    主要分为迭代器接口,具体实现迭代器,容器,具体实现的容器

    使用场景

    • 访问一个对象内部的元素而不暴露内部细节
    • 要获取多个对象的内部元素,提供统一的接口访问

    代码示例

    (一) 迭代器接口

    public interface Iterator {
        boolean hasNext();
    
        Object next();
    }
    
    

    (二) 具体迭代器

    public class ConcreteIterator implements Iterator {
    
        private int position;
        private List list = new ArrayList();
    
        public ConcreteIterator(List list){
            this.list = list;
        }
    
        @Override
        public boolean hasNext() {
            if (position == list.size()) {
                return false;
            } else {
                return true;
            }
        }
    
        @Override
        public Object next() {
            Object obj = null;
            if(this.hasNext()){
                obj = this.list.get(position++);
            }
            return obj;
        }
    }
    
    

    (三)容器接口

    public interface Aggregate {
        void add(Object obj);
    
        void remove(Object obj);
    
        Iterator iterator();
    }
    

    (四)具体的容器

    public class ConcreteAggregate implements Aggregate {
    
        private List list = new ArrayList();
    
        public void add(Object obj) {
            list.add(obj);
        }
    
        public Iterator iterator() {
            return new ConcreteIterator(list);
        }
    
        public void remove(Object obj) {
            list.remove(obj);
        }
    
    }
    

    调用方式

       Aggregate aggregate=new ConcreteAggregate();
            aggregate.add("1");
            aggregate.add("2");
            aggregate.add("3");
            aggregate.add("4");
            aggregate.add("5");
            aggregate.add("6");
            Iterator iterator = aggregate.iterator();
            while (iterator.hasNext()){
                System.out.println("\n"+iterator.next());
            }
    

    显示结果

    1
    
    2
    
    3
    
    4
    
    5
    
    6
    

    总结

    • 优点

      • 简化遍历操作,特别是对于对象的元素遍历获取
      • 外部调用只需要得到迭代器即可,内部具体遍历方式不需要关心,适用于复杂遍历
    • 缺点

      • 简单遍历反而增加操作,例如数组和有序列表
      • 增加了一部分类

    github地址

    相关文章

      网友评论

        本文标题:Android设计模式之(13)----迭代器模式

        本文链接:https://www.haomeiwen.com/subject/hoygdxtx.html