1

在很多情况下,我有一些由一堆对象实现的 BaseInterface。这些对象通常还应实现诸如 Serializable 或 Counatble 之类的接口。现在我不清楚何时将这些附加接口指定为由实现 BaseInterface 的类实现,或者何时最好让 BaseInterface 扩展这些附加接口。我正在寻找对这两种方法的影响的概述,以及一组简单的规则,人们可以根据这些规则确定在给定情况下应该采用哪种方法。

为了提高清晰度,我在这两种方法的代码中提供了一个简单的示例:

方法一:扩展基础接口

interface BaseInterface extends Countable, Serializable {}

class Implementation implements BaseInterface{}

方法 2:在实现中实现各个接口

interface BaseInterface {}

class Implementation implements BaseInterface, Countable, Serializable {}

似乎人们经常希望能够假设实现 BaseInterface 的东西是可数的,尽管 OTOH 这可能不是必需的,并且阻碍了 BaseInterface 的实现,而根本不需要实现可数的。然后还有接口隔离​​原则,这让我对像方法1那样扩展接口持谨慎态度。

注意:这个问题是关于在哪里放置接口实现子句。这与通过继承共享代码无关。

4

1 回答 1

0

我提出一个解决方案:

interface BaseInterface {}

abstract class AbstractBase implements BaseInterface {}

abstract class AbstractBaseCountable implements BaseInterface, Countable {}

abstract class AbstractBaseCountableSerializable implements BaseInterface, Countable, Serializable {}

class Implementation extends AbstractBase/* OR AbstractBaseCountable 
OR AbstractBaseCountableSerializable */ {}

因此,它可以创建具有每个不同所需特性的类。此外,在某些实现中是抽象类,因此实现类更干净。

于 2013-02-19T15:26:18.703 回答