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

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

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

第一:

分离职责:

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

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

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

第二:

面向对象设计原则:

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

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

相关推荐
shigen014 分钟前
结合HashMap与Java 8的Function和Optional消除ifelse判断
java·开发语言
yuhaiqiang21 分钟前
超乎你的想象!SpringBoot处理1 次 Http请求竟需要申请这么一大块内存!
java·spring
砖业洋__25 分钟前
Spring高手之路24——事务类型及传播行为实战指南
java·spring·事务·nested·事务传播行为
黄俊懿26 分钟前
【深入理解SpringCloud微服务】了解微服务的熔断、限流、降级,手写实现一个微服务熔断限流器
java·分布式·后端·spring cloud·微服务·架构·手写源码
追风筝的Coder30 分钟前
泛微开发修炼之旅--44用友U9与ecology对接方案及源码
java
鱟鲥鳚40 分钟前
对象关系映射ORM
java
aristo_boyunv1 小时前
【线程池】ThreadPoolExecutor应用
java·线程池·并发
工程师老罗1 小时前
Java笔试面试题AI答之设计模式(4)
java·开发语言·设计模式
KuaiKKyo1 小时前
c++9月20日
java·c++·算法
xmh-sxh-13142 小时前
java缓存介绍
java