设计模式-迭代器模式

迭代器模式

定义:提供一种方法顺序访问一个聚合对象中各个元素,而又不需要暴露该对象的内部表示。

如果我们需要遍历一个聚合对象中的各个元素,通常的做法是把遍历方法写在对象这个类里,这样做如果要更改遍历方法需要修改这个对象类,违背了“开闭原则”。迭代器模式能较好的克服这个缺点。

使用场景:需要遍历一个聚合对象

设计模式-迭代器模式

就像JDK的Iterable接口一样,集合实现了来进行遍历。
正是因为有了这个模式,所以我们集合才能有foreach来遍历,因为foreach的底层就是itreable。

代码示例:

public interface Aggregate {

    Iterator getIterator();
}
public class ConcreteAggregate implements Aggregate {


    private static String[] names=new String[]{"xiaowang","xiaoli","abc","tiantian"};

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


}
public interface Iterator {

    Object next();

    boolean hasNext();
}
public class ConcreteIterator implements Iterator {

    private String[] names;

    public ConcreteIterator(String[] names) {
        this.names = names;
    }

    private int index=-1;

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

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

测试代码:

 public static void main(String[] args) throws InterruptedException, CloneNotSupportedException {
        Aggregate aggregate=new ConcreteAggregate();
        Iterator iterator = aggregate.getIterator();
        while (iterator.hasNext()){
            Object next = iterator.next();
            System.out.println(next);
        }

    }

返回目录

上一篇:Redis设置密码重启后失效的解决方案


下一篇:深入JavaScript高级 函数柯里化 ES6的剩余参数和展开运算符