3 回答
TA贡献1826条经验 获得超6个赞
如果您不打算使用它,则无需创建接口。
通常,在以下情况下需要接口:
您的程序将为您的组件提供几种实现。例如,默认实现是代码的一部分,而模拟实现是在JUnit测试中使用的。一些工具会自动创建模拟实现,例如EasyMock。
您想通过诸如Spring或JBoss Micro-Container之类的框架对此类使用依赖注入。在这种情况下,最好使用一个接口指定一个类与其他类的依赖关系。
TA贡献2039条经验 获得超7个赞
每个类都提供一个非私有API,但确实实现了一个接口(即合同)。是否选择将接口表示为Java接口取决于实现是否为“变化的概念”。
如果您完全确定只有一种合理的实现,则不需要接口。否则,界面将允许您更改实现而无需更改客户端代码。
假设您以后对新的要求有完全的控制权,那么有些人会大喊“ YAGNI”。其他人会公平地担心,他们将需要更改不变的-已发布的API。
如果您不实现接口(并使用某种工厂进行对象创建),则某些类型的更改将迫使您违反开放式封闭原则。在某些情况下,这在商业上是可以接受的,在其他情况下则不是。
您能描述一下使用接口不是一个好主意的情况吗?
在某些语言中(例如C ++,C#,但不包括Java),如果您的类不包含虚拟方法,则可以提高性能。
在小型程序中,或者在没有发布API的应用程序中,维护单独的接口的成本可能很小。
如果由于将接口和实现分开而导致复杂性显着增加,则可能未将接口用作合同。接口降低了复杂性。从消费者的角度来看,组件成为满足合同条款的商品,而不是本身具有复杂实施细节的实体。
添加回答
举报