java设计模式16(迭代器模式)

迭代器用于对一个聚合对象进行遍历。通过引入迭代器可以将数据的遍历功能从聚合对象中分离出来,聚合对象只负责存储数据,而遍历数据由迭代器完成,简化了聚合对象的设计,更符合单一职责原则的要求。

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

迭代器模式又称为游标模式,它是一种对象行为型模式。

迭代器模式的结构与实现:
1.Iterator(抽象迭代器):它定义了访问和遍历元素的接口,声明了用于遍历数据元素的方法,例如用于获取第一个元素的first()方法,用于访问下一个元素的next()方法,用于判断是否还有下一个元素的hasNext()方法,用于获取当前元素currentItem()方法等,在具体 迭代器中将实现这些方法。

public interface Iterator {

    public void first();
    
    public void next();
    
    public boolean hasNext();
    
    public Object currentItem();
}

2.ConcreteIterator(具体迭代器):实现了抽象迭代器接口,完成对聚合对象的遍历,同时在具体迭代器中通过游标来记录在聚合对象中所处的当前位置。

public class ConcreteIterator implements Iterator {

    @Override
    public void first() {
        System.out.println("first");
    }

    @Override
    public void next() {
        System.out.println("next");
    }

    @Override
    public boolean hasNext() {
        System.out.println("hasNext");
        return false;
    }

    @Override
    public Object currentItem() {
        System.out.println("currentItem");
        return null;
    }

}

3.Aggregate(抽象聚合类):用于存储和管理元素对象,声明一个方法,用于创建一个迭代器对象,充当抽象迭代器工厂角色。

public interface Aggregate {

    Iterator createIterator();
}

4.ConcreteAggregate(具体聚合类):是抽象聚合类的子类,实现了在抽象聚合类中声明的方法,该方法返回一个与该具体聚合类对应的具体迭代器实例。

public class ConcreteAggregate implements Aggregate {

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

}

你可能感兴趣的:(java设计模式16(迭代器模式))