Java为什么不直接实现Iterator接口,而是实现Iterable?

首先Iterable是集合类的顶层接口,作为一个顶层接口,它提供了获取迭代器的方法。

Java不直接实现Iterator接口我认为有以下几点原因:

第一:

分离职责:

Iterator接口定义了遍历集合元素的具体操作方法,比如hasNext()、next()等。

他提供遍历集合元素的功能。

Iterable接口包含方法iterator(),他的作用是为集合提供一个创建其迭代器实例的工厂方法。这意味着Iterable接口并不直接参与迭代过程,而是作为一个工厂角色,将迭代细节委托给具体的Iterator实现。

第二:

面向对象设计原则:

单一职责原则:Iterable接口专注于暴露一个创建迭代器的入口,而Iterator接口专注于定义迭代行为。这样,每个接口都专注于一项职责,提高了代码的模块化成都和可维护性。

依赖倒置原则:Iterable接口与Iterator的分离使得集合类(Iterable的实现)不需要直接依赖具体的迭代器实现细节,只需要知道它能返回一个实现了Iterator接口的对象即可。这降低了耦合度,使得集合类的实现可以灵活地更换迭代器实现,有利于代码的复用和拓展。

相关推荐
小羊没烦恼!1 天前
微服务化的基石——持续集成
java·大数据·word·powerpoint·.net
俊昭喜喜里1 天前
java中的继承和多态的区别
java
小羊没烦恼!1 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
譕痕1 天前
JSONObject与JSONArray封装数据格式区别
java·json
胡写代码1 天前
别再前后端各写一套表单校验了
java·后端
小鱼能吃糖1 天前
缺陷修复总览 · mall电商项目:5类缺陷,1个病根,4个业务域
java·电商
此时不提桶,更待何时1 天前
01-06-A-JVM排查实战详解
java·jvm
vipxieliang1 天前
ValidX 在 DDD 领域驱动设计中的实践
java·spring boot
ba_pi1 天前
mysql 查询所有表名并授权
java
ProcessOn官方账号1 天前
java函数式编程--入门基础
java·编程·函数式编程