[Design Pattern] Iterator Pattern 简单案例

Posted TonyYPZhang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Design Pattern] Iterator Pattern 简单案例相关的知识,希望对你有一定的参考价值。

Iterator Pattern,即迭代时模式,按照顺序依次遍历集合内的每一个元素,而不用了解集合的底层实现,属于行为类的设计模式。为了方便理解记忆,我也会称其为遍历模式。

 

下面是一个迭代器模式的简单案例。

Iterator 定义了迭代接口, 仅 hasNext 和 next 两个方法。Container 定义了集合的接口,必须包含一个返回迭代器类 Iterator 的方法。NameRepository 是容器的具体类,实现 Container 接口,并拥有一个内部类 NameIterator ,该内部类实现了 Iterator 接口,用于遍历容器的全部元素。IteratorPatternDemo 演示迭代器模式。

 

代码实现

Iterator 接口,定义遍历的两个方法

public interface Iterator {

    public boolean hasNext();
    
    public Object next();
}

Container 接口,定义返回迭代器 Iterator 的方法

public interface Container {

    public Iterator getIterator();
}

NameRepository 是具体的容器内,含有一个内部类,内部类实现了 Iterator 接口,提供遍历集合元素的功能。

public class NameRepository implements Container {

    private String[] names = "apple,banana,pear,orange".split(",");
    
    @Override
    public Iterator getIterator() {
        return new NameIterator();
    }
    
    private class NameIterator implements Iterator{

        private int index;
        
        NameIterator(){
            index = 0;
        }
        
        @Override
        public boolean hasNext() {
            return this.index < names.length;
        }

        @Override
        public Object next() {
            Object res = names[index];
            index++;
            return res;
        }
    }
}

演示代码

public class IteratorPatternDemo {

    public static void main(){
        
        NameRepository nameRepository = new NameRepository();
        Iterator iter = nameRepository.getIterator();
        while(iter.hasNext()){
            System.out.println(iter.next());
        }
    }
}

 

参考资料

Design Patterns - Iterator Pattern, TutorialsPoint

 

以上是关于[Design Pattern] Iterator Pattern 简单案例的主要内容,如果未能解决你的问题,请参考以下文章

MVVM design pattern

[Design Pattern] DAO Pattern 简单案例

[Design Pattern] Filter Pattern 简单案例

[Design Pattern] Proxy Pattern 简单案例

Pattern Design - Strategy Pattern

LeetCode Design Compressed String Iterator