设计模式之迭代器模式

迭代器模式是一种常见的设计模式,用于顺序访问一个聚合对象的元素,而无需暴露该对象的内部表示。
 
其主要优点包括:
 
1. 支持对聚合对象的多种遍历方式,而无需修改聚合对象的接口。
2. 简化了聚合对象的接口和遍历逻辑,使客户端代码更加简洁和可维护。
3. 符合单一职责原则,将遍历的职责分离到迭代器类中。
 
在实现迭代器模式时,通常会定义一个迭代器接口,规定了一些基本的遍历操作,如获取下一个元素、判断是否还有元素等。然后针对具体的聚合对象实现相应的迭代器类。
 
例如,对于一个数组或链表这样的聚合对象,可以创建一个专门的迭代器来实现遍历操作。
 
迭代器模式在很多编程语言的标准库中都有广泛的应用,比如 Java 中的 Iterator 接口和各种集合类的迭代器实现。
 以下是一个使用 Java 实现的简单迭代器模式的示例代码:

import java.util.ArrayList;

import java.util.Iterator;

 

interface IteratorInterface {

    boolean hasNext();

    Object next();

}

 

class ConcreteIterator implements IteratorInterface {

 

    private ArrayList<Object> list;

    private int index;

 

    public ConcreteIterator(ArrayList<Object> list) {

        this.list = list;

        this.index = 0;

    }

 

    @Override

    public boolean hasNext() {

        return index < list.size();

    }

 

    @Override

    public Object next() {

        if (hasNext()) {

            return list.get(index++);

        }

        return null;

    }

}

 

class Aggregate {

 

    private ArrayList<Object> items = new ArrayList<>();

 

    public void addItem(Object item) {

        items.add(item);

    }

 

    public IteratorInterface createIterator() {

        return new ConcreteIterator(items);

    }

}

 

public class IteratorPatternExample {

 

    public static void main(String[] args) {

        Aggregate aggregate = new Aggregate();

        aggregate.addItem("Item 1");

        aggregate.addItem("Item 2");

        aggregate.addItem("Item 3");

 

        IteratorInterface iterator = aggregate.createIterator();

 

        while (iterator.hasNext()) {

            System.out.println(iterator.next());

        }

    }

}

 

在上述代码中:

 

- 定义了 IteratorInterface 接口,包含 hasNext 和 next 方法。

-  ConcreteIterator 类实现了迭代器接口,用于遍历 ArrayList 。

-  Aggregate 类表示聚合对象,包含数据,并提供创建迭代器的方法。

 

在 main 方法中创建聚合对象,添加元素,然后通过迭代器进行遍历输出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值