设计模式系列——迭代器模式

84 阅读1分钟

原创:花括号MC(微信公众号:huakuohao-mc),欢迎分享,转载请保留出处。

迭代器模式是日常用的最多的了。迭代器主要是提供一种方式,让我们能够访问容器里面的元素。

先来看一下UML图:

iterator.png

看一下如何实现一个迭代器

先定义一个迭代器接口

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

定义一个容器接口,该接口返回一个迭代器

public interface Container {
    public Iterator getIterator();
}

定义一个 NameIterator 实现Iterator接口

private class NameIterator implements Iterator{
    int index;

    @Override
    public boolean hasNext() {
        if (index < names.length){
            return true;
        }
        return false;
    }

    @Override
    public Object next() {
        if (this.hasNext()){
            return names[index++];
        }
        return null;
    }
}

定义一个具体的容器,使用Iterator实现元素访问。

public class NameRepository implements Container {
    public String names[] = {"Robert", "John", "Julie", "Lora"};

    @Override
    public Iterator getIterator() {
        return new NameIterator();
    }
}

客户端这样使用

public class IteratorPatternDemo {
    public static void main(String[] args){
        NameRepository nameRepository = new NameRepository();

        for (Iterator iterator = nameRepository.getIterator(); iterator.hasNext();){
            //通过迭代器访问
            String name = (String) iterator.next();
            System.out.println("Name : " + name);
        }
    }
}

总结

迭代器模式是行为模式之一,日常开发中虽然使用频率很高,但是自己实现迭代器模式的概率还不是很高。

本文参考 www.tutorialspoint.com/design_patt…