在很多情况下,我有一些由一堆对象实现的 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那样扩展接口持谨慎态度。
注意:这个问题是关于在哪里放置接口实现子句。这与通过继承共享代码无关。