gpt4 book ai didi

java - 我应该什么时候返回接口(interface),什么时候返回具体类?

转载 作者:IT老高 更新时间:2023-10-28 20:42:55 27 4
gpt4 key购买 nike

当我用 Java 编程时,出于习惯,我几乎总是写这样的东西:

public List<String> foo() {
return new ArrayList<String>();
}

大多数时候甚至都没有考虑过。现在,问题是:我应该总是将接口(interface)指定为返回类型吗?或者是否建议使用接口(interface)的实际实现,如果可以,在什么情况下?

很明显,使用界面有很多优势(这就是它存在的原因)。在大多数情况下,库函数使用什么具体实现并不重要。但也许在某些情况下它确实很重要。例如,如果我知道我将主要随机访问列表中的数据,那么 LinkedList 会很糟糕。但是如果我的库函数只返回接口(interface),我根本不知道。为了安全起见,我什至可能需要将列表显式复制到 ArrayList:

List bar = foo();
List myList = bar instanceof LinkedList ? new ArrayList(bar) : bar;

但这看起来很可怕,我的同事可能会在自助餐厅私刑处死我。理所当然。

你们怎么看?你的指导方针是什么,你什么时候倾向于抽象解决方案,你什么时候透露你的实现细节以获得潜在的性能提升?

最佳答案

返回适当的接口(interface)以隐藏实现细节。你的客户应该只关心你的对象提供了什么,而不是你如何实现它。如果你从一个私有(private) ArrayList 开始,然后决定其他的东西(例如,LinkedLisk、跳过列表等)更合适,你可以在返回接口(interface)时更改实现而不影响客户端。返回具体类型的那一刻,机会就失去了。

关于java - 我应该什么时候返回接口(interface),什么时候返回具体类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/932452/

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