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

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

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

第一:

分离职责:

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

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

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

第二:

面向对象设计原则:

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

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

相关推荐
毕设源码-朱学姐20 小时前
【开题答辩全过程】以 4S店汽车维修保养管理系统为例,包含答辩的问题和答案
java·spring boot·汽车
盖世英雄酱5813620 小时前
Read timed out问题 排查
java·数据库·后端
狼爷21 小时前
破解 JetBrains 的学生,后来都成了它的 “推销员”:一场用习惯换市场的长期战
java·jetbrains
.豆鲨包21 小时前
【Android】Viewpager2实现无限轮播图
android·java
BXCQ_xuan21 小时前
软件工程实践二:Spring Boot 知识回顾
java·spring boot·后端
老赵的博客21 小时前
c++ unqiue指针
java·jvm·c++
wuxuanok21 小时前
SpringBoot -原理篇
java·spring boot·spring
柿蒂1 天前
从if-else和switch,聊聊“八股“的作用
android·java·kotlin
二饭1 天前
Spring Boot 项目启动报错:MongoSocketOpenException 连接被拒绝排查日记
java·spring boot·后端
懒虫虫~1 天前
通过内存去重替换SQL中distinct,优化SQL查询效率
java·sql·慢sql治理