迭代器模式(Iterator)

迭代器模式git

一. 迭代器模式

1.1 定義

  • 提供一種方法順序訪問一個集合對象中的各類元素,而又不暴露該對象的內部表示.

1.2 角色

  • 抽象迭代器接口(Iterator).
  • 具體迭代器(ConcreteIterator).
  • 抽象聚合接口(Aggregate).
  • 具體聚合(ConcreteAggregate).

二. 具體實現

1.1 建立抽象迭代器接口

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

1.2 建立抽象聚合接口

public interface Aggregate {
        Iterator iterator();
    }

1.3 建立具體聚合及具體迭代器

public class ConcreteAggregate implements Aggregate {
        @Override
        public Iterator iterator() {
            return new ConcreteIterator();
        }
        private class ConcreteIterator implements Iterator {
            @Override
            public Object next() {
                System.out.println("ConcreteIterator next ...");
                return null;
            }
            @Override
            public boolean hasNext() {
                System.out.println("ConcreteIterator hasNext ....");
                return true;
            }
        }
    }

1.4 調用

public static void main(String[] args) {
        Aggregate aggregate = new ConcreteAggregate();
        Iterator iterator = aggregate.iterator();
        if(iterator.hasNext()){
            iterator.next();
        }
    }

1.5 輸出

ConcreteIterator hasNext ....
    ConcreteIterator next ...

三. 優缺點

3.1 優勢

  • 簡化了聚合類的接口.

3.2 缺點

  • 增長新的聚合類須要增長新的具體迭代器.

四. 源碼

https://github.com/Seasons20/DisignPattern.git

ENDgithub

相關文章
相關標籤/搜索