• 迭代器模式


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

     

    迭代器模式的结构

    • 抽象容器:一般是一个接口,提供一个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());
            }
        }
    }
  • 相关阅读:
    Java 多线程同步的五种方法
    MySQL中的内连接、左连接、右连接、全连接、交叉连接
    java中线程安全和非线程安全的集合
    hashCode和equal
    MySQL中char、varchar和nvarchar的区别
    MySQL存储引擎
    String在内存中如何存储(Java)
    String、StringBuffer、StringBuilder区别
    MySQL中的事务
    gbk、utf-8、utf8mb4区别
  • 原文地址:https://www.cnblogs.com/m2492565210/p/7461553.html
Copyright © 2020-2023  润新知