我继承了一些老旧的Java代码(1.4版本),这个设计决策经常出现。我不明白它是否有任何目的或原因。
public interface SoapFacade extends iConfigurable{ }
public class SoapFacadeBase implements SoapFacade{
...
}
public class SoapFacadeImpl extends SoapFacadeBase implements SoapFacade{
...
}
据我理解接口(并通过我的实验加强了这一点),在父类和子类同时实现相同接口没有意义。在这种情况下,SoapFacade
中的所有内容已经在 SoapFacadeBase
中实现,但是 iConfigurable
接口的方法是在 SoapFacadeImpl
中实现的。然而,这并不需要让 SoapFacadeImpl
实现 SoapFacade
接口。
我是否有所不知关于接口的某些内容,使得这种模式有用或者受益?除了缺乏清晰度之外,是否存在其他成本应该进行重构?还是应该为了清晰/简明而进行重构?
SoapFacade
中的所有内容都在基类中实现;因此,我更倾向于从派生类中删除implements SoapFacade
,以便将SoapFacade
的细节隐藏起来,不让子类知道。 - Riggy