当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《Java接口方法:每个类应该实现一个接口吗?》经验,为你挑选了4个好方法。

我一直在用Java编写大学的几门课程,我有以下问题:

从方法论上接受每个类应该实现一个接口吗?不这样做被认为是不好的做法吗?你能描述一下使用接口不是一个好主意的情况吗?

编辑:就个人而言,我喜欢将Interfaces作为一种方法和习惯使用的概念,即使它并不明显有益.Eclipse自动创建了一个包含所有方法的类文件,因此它不会浪费任何时间.



1> 小智..:

如果您不打算使用它,则无需创建界面.

通常,在以下情况下需要接口:

您的程序将为您的组件提供多种实现.例如,作为代码一部分的默认实现,以及在JUnit测试中使用的模拟实现.有些工具可以自动创建模拟实现,例如EasyMock.

您希望对此类使用依赖注入,使用Spring或JBoss Micro-Container等框架.在这种情况下,最好使用接口从一个类和其他类指定依赖项.


单位测试和嘲笑+1.出于这个原因,我在几乎所有类中使用接口.
@Philippe现代模拟框架可以模拟类.

2> Petar Minche..:

遵循YAGNI原则,如果您真的需要,类应该实现接口.否则你从中获得了什么?

编辑:接口提供了一种抽象.如果要在不同的实现(实现相同接口的许多类)之间进行交换,它们特别有用.如果它只是一个类,那么就没有收获.



3> richj..:

每个类都实现了一个接口(即契约),因为它提供了非私有API.是否应该选择将接口单独表示为Java接口取决于实现是否是"变化的概念".

如果您完全确定只有一个合理的实现,那么就不需要接口.否则,接口将允许您在不更改客户端代码的情况下更改实现.

有些人会喊"YAGNI",假设您可以在以后发现新要求时完全控制更改代码.其他人会害怕他们需要改变不可更改的 - 一个已发布的API.

如果你没有实现一个接口(并使用某种工厂来创建对象),那么某些类型的更改将迫使你打破开闭原则.在某些情况下,这是商业上可接受的,而在其他情况下则不是.

你能描述一下使用接口不是一个好主意的情况吗?

在某些语言(例如C++,C#,但不是Java)中,如果您的类不包含虚拟方法,则可以获得性能优势.

在小程序或没有发布API的应用程序中,您可能会看到维护单独接口的成本很低.

如果由于分离接口和实现而导致复杂性显着增加,那么您可能不会将接口用作合同.接口降低了复杂性.从消费者的角度来看,组件成为履行合同条款的商品,而不是具有本身具有复杂实施细节的实体.



4> Kaleb Brasee..:

不,每个类都没有必要实现一个接口.仅在使代码更清晰且更易于编写时才使用接口.

如果您的程序目前不需要为给定的类提供多于1个实现,那么您不需要接口.例如,在我写的一个简单的国际象棋程序中,我只需要一种类型的Board对象.棋盘是棋盘棋盘.制作一个Board接口并实现它只需要更多的代码来编写和维护.

如果你最终需要它,那么切换到界面是如此容易.


是的-在某些情况下,接口有意义,而分布式库中的类就是其中一种。但是,OP并未询问该特定案例,而是询问了所有班级。
推荐阅读
yzh148448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有