未使用的接口参数

Ste*_*eve 5 language-agnostic oop interface

我有一个由三十个具体类实现的接口。具体实现者分为两组,每组都继承自一个公共抽象类。抽象类定义了具体实现者的构造函数,包括为双方的每一“方”传入一个数据库连接对象(它们有不同的数据库,等等)。

所有当前的接口方法都有具体类“完成工作”所需的几个参数,但并非每个实现者都使用所有参数。

今天早上当我去往接口中添加一个新方法时,我意识到只有一个具体的实现者需要数据库连接,而其他人不需要它。所以,这让我想知道,我应该将它作为参数传递吗?需要“完成工作”,但仅针对其中一个具体类,并且该类已经具有数据库连接。如果我将数据库连接作为接口参数传入,那么其他 29 个类将不会使用它。

什么是可接受的接口参数的好线是什么?任何有关该主题的阅读/内容,我也会很感激地吞噬。

raz*_*ebe 2

当前的所有接口方法均具有具体类“完成工作”所需的多个参数,但并非所有实现者都使用所有参数。

在我看来,这听起来很像这个界面正在慢慢变成一个“上帝界面”。通过问自己几个问题来检查是否属于这种情况:

  • 该接口是否代表模型中的单个行为概念,或者它是否已成为多个概念的方法签名的方便垃圾场?是否可以将其称为“eg” Serializable,或者更准确地称为“ SerializableAndSomethingElse.”?
  • 您能否将接口分成几个更具内聚性的接口,并让 30 个不同的对象只实现它们需要的对象?

今天早上,当我向接口添加一个新方法时,我意识到只有一个具体实现者需要数据库连接,而其余的实现者则不需要它。所以,这让我想知道,我应该将它作为参数传递吗?

不。事实上,如果数据库连接仅由其中一个实现者需要,那么听起来它根本不属于接口。接口应该代表抽象 API,听起来好像数据库连接是该 API 实现的一部分。