获得适当级别的接口粒度

mik*_*era 10 java language-agnostic architecture api-design interface

我目前正在做一些API设计工作,涉及将许多接口的规范作为抽象,稍后将由各种具体类实现.

碰巧,我正在使用Java,但我认为这个问题与任何支持类似界面概念的语言相关.

我注意到之间通常有一个选项:

  • 使用各种方法创建大型界面
  • 创建多个接口,每个接口包含所有方法的子集(单个具体类可能必须实现几个或所有这些接口)

每种方法的优缺点是什么?

Fab*_*llo 2

我不会提倡使用太多方法的接口,就像我也不会提倡使用类一样。必须使用此类接口或派生类的程序员将很难理解它们之间的关系;此外,试图记住它们是什么以及何时使用就像玩弄太多的球一样。

对我来说,一般来说,一个模块超过 1000 行就太多了;一个方法中的行数也超过 100 行;类或接口中也有超过 15 个方法。当然,可能会有例外,但我会尽力避免它们。

在考虑使用哪些方法之前,我会先定义您拥有哪些接口。考虑系统中每个抽象实体的“原子行为”是什么,并使每个实体成为一个接口,如果需要的话可以与继承组合。然后决定方法——之后每个接口可能就不会很多了。