设计模式之迭代器模式

文章目录

定义

迭代器模式(Iterator Pattern)是行为设计模式之一,它提供了一种访问集合对象元素的方式,而不需要暴露集合的内部表示。迭代器模式可以让你顺序地访问集合中的每个元素,而无需知道集合的底层实现。这种方式支持对不同类型的集合进行统一的操作,增加了程序的灵活性和可扩展性。

主要角色:

  • Iterable(Iterable Interface): 定义了创建迭代器对象的接口。
  • Iterator(Iterator Interface): 定义了遍历集合元素所需的方法,如hasNext()和next()。
  • Concrete Iterable(Concrete Collection): 实现Iterable接口,负责创建对应的具体迭代器对象。
  • Concrete Iterator: 实现Iterator接口,完成集合元素的遍历。

示例代码

在Java中,迭代器模式已经内建于语言本身,通过Iterable和Iterator接口实现。下面是一个简化的例子,展示如何自定义一个集合类并实现迭代器模式。

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

// 具体的可迭代集合类
class CustomCollection implements Iterable<String> {
    private List<String> items = new ArrayList<>();

    public CustomCollection(String... elements) {
        for (String element : elements) {
            items.add(element);
        }
    }

    @Override
    public Iterator<String> iterator() {
        return new CustomIterator();
    }

    // 内部类,实现迭代器
    private class CustomIterator implements Iterator<String> {
        private int index = 0;

        @Override
        public boolean hasNext() {
            return index < items.size();
        }

        @Override
        public String next() {
            if (!hasNext()) {
                throw new NoSuchElementException();
            }
            return items.get(index++);
        }
    }
}

// 客户端代码
public class IteratorPatternDemo {
    public static void main(String[] args) {
        CustomCollection collection = new CustomCollection("A", "B", "C", "D");

        // 使用迭代器遍历集合
        for (String item : collection) {
            System.out.println(item);
        }
    }
}
相关推荐
李广坤10 小时前
状态模式(State Pattern)
设计模式
李广坤12 小时前
观察者模式(Observer Pattern)
设计模式
李广坤13 小时前
中介者模式(Mediator Pattern)
设计模式
李广坤13 小时前
迭代器模式(Iterator Pattern)
设计模式
李广坤13 小时前
解释器模式(Interpreter Pattern)
设计模式
阿无,16 小时前
java23种设计模式之前言
设计模式
Asort17 小时前
JavaScript设计模式(八):组合模式(Composite)——构建灵活可扩展的树形对象结构
前端·javascript·设计模式
数据智能老司机17 小时前
数据工程设计模式——数据基础
大数据·设计模式·架构
笨手笨脚の20 小时前
设计模式-代理模式
设计模式·代理模式·aop·动态代理·结构型设计模式
Overboom1 天前
[C++] --- 常用设计模式
开发语言·c++·设计模式