接口中的方法数

Jeo*_*eow 7 java interface

我知道这似乎是一个有争议的问题,但实际上并非如此.在接口中是否有最佳方法数.

例如,我个人讨厌使用20种方法的界面.这很难实施.合同似乎难以维持.同样,如果方法的数量只是1.这让我想知道它是否真的是一个很好的抽象.

有什么想法吗 ?

Boz*_*zho 17

接口应该具有所需数量的方法.例子:

java.lang.Iterable- 1个方法
java.lang.Comparable- 1个方法
java.util.Collection- 14个方法
java.util.List- 25个方法(包括来自Collection的方法)

所以答案是 - 不要将数字作为界面的标准.相反,将方法放在逻辑上属于它们的接口中.

  • java.lang.Runnable - 1 种方法:) (2认同)
  • java.io.Serializable - 0方法:) (2认同)

Jac*_*son 5

有一项众所周知的研究表明,我们一次可以处理的信息项数是7,加减2.我经常发现这对于这类问题是一个很好的经验法则 - 在这种情况下,如果界面设计为管理一组相关的功能,我们可能无法将功能理解为单一设置是否超过七个.

但是,对于许多接口,开发人员不需要能够将功能理解为单个相关集,在这种情况下,此规则将不相关.


Daf*_*aff 5

具有一种方法的良好接口通常具有其目的,并且您可以更轻松地匿名实现它们。我的经验法则是需要的方法。但是一个接口中的许多方法通常建议您将其拆分为其他多个接口,尤其是当它影响不同的任务区域时(例如,一个UserLoginAndAdministrationInterface成为一个UserLogin和一个UserAdministration接口)。您可以在一个类中实现任意数量的接口,它们也可以被子类化。因此,拆分它们完全没有伤害。


Kri*_*ris 5

接口应具有所需的方法。

如果该数字很大,则应仔细研究其原理,但这可能是有效的。

另一方面,在Java中(至少)有一个实例,其中该接口不需要方法(可序列化),因此不需要任何方法。更少的方法肯定可以简化接口的实现,但是仍然可以提供非常有用的抽象。一种方法有多种接口。