gpt4 book ai didi

java - 更喜欢哪个界面以及基于什么基础?

转载 作者:行者123 更新时间:2023-12-01 23:30:01 25 4
gpt4 key购买 nike

有效的java鼓励使用接口(interface)而不是抽象/具体类。问题是如果存在接口(interface)层次结构,应该选择哪种接口(interface)类型以及为什么?

例如,ArrayList实现List它实现了 Collection它实现了 Iterable 。那么我们什么时候通过listcollectioniterable

显而易见的答案是每个子类不断添加更多功能。那么我们是否应该继续沿着层次结构向上爬,直到所需的功能匹配为止?我的意思是,如果仅在一个虚构的应用程序中 iterator()需要然后使用Iterable否则使用List

最佳答案

始终使用最抽象的接口(interface)来满足您的需求。

在Iterable、Collection、List的例子中,如果你只需要迭代那么只传递一个Iterable。如果您只需要 Collection 提供的方法,那么只需传递一个集合即可。

这样做的原因是为了以后可以轻松替换。

例如,如果您有一个只需要 Iterable 但将 List 作为函数参数的函数,那么稍后如果您认为将数据存储为 HashSet 更有意义,则必须更改大量代码使其发挥作用。但是,由于 HashSet 是 Iterable,如果您最初只是将 Iterable 传递给函数,则只需更改更少的代码。

在某些情况下,它还使测试变得更加容易。例如,假设您有一些扩展接口(interface) Bar 的接口(interface) Foo。如果您有一个接受 Foo 参数的函数,那么您必须模拟 Bar 期望的所有内容,并且必须模拟 Foo 添加到其中的所有内容。如果您的函数只需要一个 Bar 参数,那么您只需模拟 Bar。

关于java - 更喜欢哪个界面以及基于什么基础?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19472516/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com