Java接口方法:每个类都应实现一个接口吗?

我已经在大学的一些课程中使用Java编程,但是我有以下问题:


从方法上来说,每个类都应该实现一个接口吗?不这样做是不明智的做法?您能描述一下使用接口不是一个好主意的情况吗?


编辑:就个人而言,我喜欢将所有对象都使用接口的概念作为一种方法和习惯,即使这显然没有好处。Eclipse使用所有方法自动创建了一个类文件,因此无论如何都不会浪费时间。


慕斯709654
浏览 1401回答 3
3回答

跃然一笑

如果您不打算使用它,则无需创建接口。通常,在以下情况下需要接口:您的程序将为您的组件提供几种实现。例如,默认实现是代码的一部分,而模拟实现是在JUnit测试中使用的。一些工具会自动创建模拟实现,例如EasyMock。您想通过诸如Spring或JBoss Micro-Container之类的框架对此类使用依赖注入。在这种情况下,最好使用一个接口指定一个类与其他类的依赖关系。

largeQ

每个类都提供一个非私有API,但确实实现了一个接口(即合同)。是否选择将接口表示为Java接口取决于实现是否为“变化的概念”。如果您完全确定只有一种合理的实现,则不需要接口。否则,界面将允许您更改实现而无需更改客户端代码。假设您以后对新的要求有完全的控制权,那么有些人会大喊“ YAGNI”。其他人会公平地担心,他们将需要更改不变的-已发布的API。如果您不实现接口(并使用某种工厂进行对象创建),则某些类型的更改将迫使您违反开放式封闭原则。在某些情况下,这在商业上是可以接受的,在其他情况下则不是。您能描述一下使用接口不是一个好主意的情况吗?在某些语言中(例如C ++,C#,但不包括Java),如果您的类不包含虚拟方法,则可以提高性能。在小型程序中,或者在没有发布API的应用程序中,维护单独的接口的成本可能很小。如果由于将接口和实现分开而导致复杂性显着增加,则可能未将接口用作合同。接口降低了复杂性。从消费者的角度来看,组件成为满足合同条款的商品,而不是本身具有复杂实施细节的实体。
打开App,查看更多内容
随时随地看视频慕课网APP