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

    提供一种方法访问一个容器对象中各个元素,而又不暴露该对象的内部细节。

     

    迭代器模式的结构

    • 抽象容器:一般是一个接口,提供一个iterator()方法,例如java中的Collection接口,List接口,Set接口等。
    • 具体容器:就是抽象容器的具体实现类,比如List接口的有序列表实现ArrayList,List接口的链表实现LinkList,Set接口的哈希列表的实现HashSet等。
    • 抽象迭代器:定义遍历元素所需要的方法,一般来说会有这么三个方法:取得第一个元素的方法first(),取得下一个元素的方法next(),判断是否遍历结束的方法isDone()(或者叫hasNext()),移出当前对象的方法remove(),
    • 迭代器实现:实现迭代器接口中定义的方法,完成集合的迭代。

    Container

    package design.pattern.iterator;
    
    public interface Container {
        public Iterator getIterator();
    }

    Iterator

    package design.pattern.iterator;
    
    public interface Iterator {
        public boolean hasNext();
        public Object next();
    }

    ConcreteContainer

    package design.pattern.iterator;
    
    public class ConcreteContainer implements Container {
    
        private int[] arr = {0, 1, 2, 3, 4, 5};
        
        @Override
        public Iterator getIterator() {
            return new ConcreteIterator();
        }
        
        private class ConcreteIterator implements Iterator {
            
            private int index=0;
            
            @Override
            public boolean hasNext() {
                return index < arr.length;
            }
    
            @Override
            public Object next() {
                if (!this.hasNext())
                    return null;
                return arr[index++];
            }
    
        }
    
    }

    Client

    package design.pattern.iterator;
    
    public class Client {
        public static void main(String[] args) {
            Iterator it = new ConcreteContainer().getIterator();
            
            while (it.hasNext()) {
                System.out.println(it.next());
            }
        }
    }
  • 相关阅读:
    数据结构(2)-链表
    数据结构(1)-数组
    SpringMVC学习总结(一)--Hello World入门
    基本数据类型对象的包装类
    关于String的相关常见方法
    常见的集合容器应当避免的坑
    再一次生产 CPU 高负载排查实践
    分表后需要注意的二三事
    线程池没你想的那么简单(续)
    线程池没你想的那么简单
  • 原文地址:https://www.cnblogs.com/m2492565210/p/7461553.html
Copyright © 2011-2022 走看看