java - 为什么要返回 Iterator 低耦合 (OOP)?

标签 java oop arraylist iterator loose-coupling

所以我今天听说返回迭代器是比返回数组列表更好的解决方案(低耦合/松耦合)。

我有一个项目数组列表,我有一个用于此数组列表的 getter,并且想知道为什么获取迭代器比获取 java 中的数组列表更好的解决方案?

是不是因为迭代器可以根据需要转换为不同的集合?还是有更多我不知道的好处?

最佳答案

纯粹从两个类之间的松耦合或紧耦合的角度来看,它没有任何不同 - 最初我会对此持不同意见,但我将在下面解释原因。如果出于其他原因有更好的选择,这是一个不同的问题,但耦合实际上并不是其中之一。

从接口(interface)的角度来看,您有一个类 A,它引用了具有该集合的类 B。 B 返回 arraylist,这意味着它返回 java.util.ArrayList(独立于 A 或 B 的第三类)。如果您返回一个 java.util.Iterator,您还有一个独立于 A 或 B 的第三类。在这两种情况下,A 都不需要或多或少地了解 B 的内部工作原理,因此耦合保持不变。

但是,根据评论/其他答案,您可能出于其他原因更愿意返回集合(未指定实际实现)或迭代器。如果您正在创建一个公共(public) API,那么选择很重要。如果您在自己的代码内部这样做,请使用对调用者来说最简单的选择。

如果这只是类练习,请回答迭代器是松耦合的,因为它们可能无法正确区分。

关于java - 为什么要返回 Iterator 低耦合 (OOP)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37600576/

相关文章:

java - 如何在android中下载图像?

c++ - 如何使我的 C++ 类事件系统成为限于类型数组的模板类?

javascript - 在javascript中调用父构造函数

java - 使用 ArrayList <Integer> 对整数进行排序

java - 如何使用 ExecutorService Java 减少到达 Runnable 类的运行方法的时间延迟

java - fragment 内的 WebView 返回按钮

java - 需要在java中显示流满二叉树

oop - 一个对象应该只做一件事的想法从何而来?

java - 从有序的 ArrayList 中挑选一个随机元素

java - 将元素从一个 ArrayList 移动到另一个