Java23种设计模式-行为型模式之迭代器模式

迭代器模式(Iterator Pattern):允许用户对容器对象中的元素进行迭代访问,而无需暴露对象的底层数据结构。迭代器模式定义了一种顺序访问聚合对象元素的方法,而不依赖于具体存储方式。

基本组成
迭代器接口(Iterator):定义了迭代器对象需要实现的方法,如next()(移动到下一个元素)、hasNext()(检查是否有下一个元素)、remove()(删除当前元素)等。
具体迭代器(ConcreteIterator):实现了Iterator接口,生成迭代器的实例,记录遍历过程中的当前位置。
聚合接口(Aggregate):定义了创建迭代器对象的方法,通常是一个名为createIterator()的方法。
具体聚合(ConcreteAggregate):实现了Aggregate接口,返回一个与该具体聚合相关联的ConcreteIterator对象的实例。

优点

支持以不同的方式遍历一个聚合对象。

不暴露聚合对象的内部结构,提供了一个安全的方式来访问聚合对象。

提供了一个统一的接口,可以用来处理不同的迭代器。
缺点

可能会增加一些额外的复杂性,特别是当聚合对象有多种不同的访问方式时。

适用场景

当需要访问一个聚合对象的元素,而又不暴露其内部结构时。

当需要对聚合对象提供多种不同的访问路径时。

示例

java 复制代码
// 迭代器接口
public interface IterableCollection {
    Iterator createIterator();
}
// 具体聚合
public class ListCollection implements IterableCollection{
    private List list;

    public ListCollection(List list) {
        this.list = list;
    }

    @Override
    public Iterator createIterator() {
        return list.iterator();
    }
}
public class IteratorExample {

    public static void main(String[] args) {
        ListCollection collection = new ListCollection(Arrays.asList("a", "b", "c"));
        Iterator iterator = collection.createIterator();
        while (iterator.hasNext()){
            System.out.println(iterator.next());
        }

    }
}

ListCollection实现了IterableCollection接口,并提供了createIterator()方法,该方法返回了一个List的iterator()。然后在主程序中,我们通过调用createIterator()方法获取迭代器,并通过迭代器的hasNext()和next()方法遍历集合中的元素

相关推荐
ttod_qzstudio1 小时前
【软考设计模式】装饰模式:“套娃“式增强与动态职责扩展精讲
设计模式·装饰模式
烬羽2 小时前
MCP 多服务器架构实战:一个 Agent 同时操控地图、浏览器和文件
设计模式·设计
儒雅的名5 小时前
GoF设计模式——策略模式
设计模式·bash·策略模式
折哥的程序人生 · 物流技术专研14 小时前
第4篇:Lambda 简化策略模式(Java 8+)
java·设计模式·策略模式·函数式编程·lambda·代码简化·扩充系列
jsonbro21 小时前
手把手带你实现发布订阅模式
前端·vue.js·设计模式
workflower1 天前
室内外配送机器人-应用路径
人工智能·机器学习·设计模式·矩阵·自动化
ttod_qzstudio1 天前
【软考设计模式】原型模式:“克隆“对象与深拷贝、浅拷贝精讲
设计模式·原型模式
geovindu1 天前
java: Builder Pattern
java·开发语言·后端·设计模式·建造者模式·生成器模式
折哥的程序人生 · 物流技术专研1 天前
第5篇:框架里的模板方法:HttpServlet、JdbcTemplate、AbstractList
设计模式·源码分析·jdbctemplate·httpservlet·模版方法模式·扩充系列
researcher-Jiang2 天前
Design Patterns——Template Method入门到情景实战
python·设计模式·模板方法模式