我有很多情况我有一些BaseInterface,它由一堆对象实现。这些对象通常也应该实现Serializable或Counatble等接口。现在我不清楚何时将这些附加接口指定为由实现BaseInterface的类实现,或者当BaseInterface扩展这些附加接口时更好。我正在寻找这两种方法的含义的概述,以及一套简单的规则,通过这些规则可以确定在给定情况下应该采取哪种方法。
为了提高清晰度,我在两种方法的代码中提供了一个简单的例子:
方法1:扩展基接口
interface BaseInterface extends Countable, Serializable {}
class Implementation implements BaseInterface{}
方法2:在实现中实现各个接口
interface BaseInterface {}
class Implementation implements BaseInterface, Countable, Serializable {}
似乎通常有人希望能够假设实现BaseInterface的东西是可数的,虽然可能不需要OTOH并阻碍BaseInterface的实现,而实现Countable根本不需要。然后还有接口隔离原则,这使我对扩展接口持谨慎态度,如方法1所示。
注意:这个问题是关于在哪里放置接口实现子句。它不是通过继承进行代码共享。
答案 0 :(得分: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 */ {}
因此,它可以创建具有每个不同所需特征的类。而且,在某些实现中是抽象类,因此实现类更清晰。