设计模式-迭代子模式

迭代子模式是一种行为设计模式,它提供了一种访问和遍历聚合对象中各个元素的方法,而不需要暴露聚合对象的内部表示。迭代子模式将遍历聚合对象的责任交给了迭代子对象,从而实现了聚合对象和迭代子对象的解耦。

在Java中,迭代子模式可以通过自定义迭代子类来实现。迭代子类负责遍历聚合对象,并提供访问和操作元素的方法。迭代子模式(Cursor Pattern),也被称为游标模式。

以下是一个简单的Java代码示例,演示了迭代子模式的使用

java 复制代码
import java.util.ArrayList;
import java.util.List;

// 迭代子接口
interface Iterator {
    boolean hasNext();
    Object next();
}

// 聚合对象接口
interface Aggregate {
    Iterator createIterator();
}

// 具体聚合对象类
class ConcreteAggregate implements Aggregate {
    private List<Object> elements;

    public ConcreteAggregate() {
        elements = new ArrayList<>();
    }

    public void addElement(Object element) {
        elements.add(element);
    }

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

    public Object getElement(int index) {
        if (index >= 0 && index < elements.size()) {
            return elements.get(index);
        }
        return null;
    }

    public int getSize() {
        return elements.size();
    }
}

// 具体迭代子类
class ConcreteIterator implements Iterator {
    private ConcreteAggregate aggregate;
    private int index;

    public ConcreteIterator(ConcreteAggregate aggregate) {
        this.aggregate = aggregate;
        index = 0;
    }

    @Override
    public boolean hasNext() {
        return index < aggregate.getSize();
    }

    @Override
    public Object next() {
        if (hasNext()) {
            return aggregate.getElement(index++);
        }
        return null;
    }
}

public class Main {
    public static void main(String[] args) {
        ConcreteAggregate aggregate = new ConcreteAggregate();
        aggregate.addElement("Element 1");
        aggregate.addElement("Element 2");
        aggregate.addElement("Element 3");

        Iterator iterator = aggregate.createIterator();
        while (iterator.hasNext()) {
            Object element = iterator.next();
            System.out.println(element);
        }
    }
}

在上面的示例中,我们定义了迭代子接口Iterator和聚合对象接口Aggregate。具体聚合对象类ConcreteAggregate实现了聚合对象接口,并提供了添加元素、获取元素数量等方法。具体迭代子类ConcreteIterator实现了迭代子接口,并提供了判断是否有下一个元素、获取下一个元素等方法。在Main类中,我们创建了具体聚合对象的实例,并添加了一些元素。然后,我们通过调用聚合对象的createIterator()方法获取迭代子对象,并使用迭代子对象顺序访问聚合对象中的元素。

迭代子模式是一种重要的设计模式,它可以帮助我们实现对聚合对象中元素的访问和遍历,同时保持聚合对象的封装性。

相关推荐
伍哥的传说27 分钟前
Radash.js 现代化JavaScript实用工具库详解 – 轻量级Lodash替代方案
开发语言·javascript·ecmascript·tree-shaking·radash.js·debounce·throttle
xidianhuihui1 小时前
go install报错: should be v0 or v1, not v2问题解决
开发语言·后端·golang
架构师沉默1 小时前
Java优雅使用Spring Boot+MQTT推送与订阅
java·开发语言·spring boot
tuokuac1 小时前
MyBatis 与 Spring Boot版本匹配问题
java·spring boot·mybatis
zhysunny2 小时前
05.原型模式:从影分身术到细胞分裂的编程艺术
java·原型模式
DebugKitty2 小时前
C语言14-指针4-二维数组传参、指针数组传参、viod*指针
c语言·开发语言·算法·指针传参·void指针·数组指针传参
Bio Coder2 小时前
R语言中 read.table 和 read.delim 之间的区别
开发语言·r语言
草履虫建模2 小时前
RuoYi-Vue 项目 Docker 容器化部署 + DockerHub 上传全流程
java·前端·javascript·vue.js·spring boot·docker·dockerhub
皮皮林5513 小时前
强烈建议你不要再使用Date类了!!!
java
困鲲鲲3 小时前
设计模式:中介者模式 Mediator
设计模式·中介者模式