我有两个类(class)。我们称它们为 PostClass
和 CommentClass
。这两个类都实现了 Reportable
接口(interface):
public interface Reportable {
void report();
boolean isReported();
. . .
现在我需要为每个类添加两个额外的方法。这些方法在逻辑上适契约(Contract)一个接口(interface),但需要有不同的名称。例如:
PostClass
将有方法 -> remove()
, restore()
CommentClass
将有方法 -> hide()
, show()
问题:设计此更改的首选方法是什么?选项如我所见:
- 创建一个附加接口(interface)来扩展
Reportable
接口(interface)。 问题:接口(interface)太多 - 将所有四个新方法添加到
Reportable
接口(interface)中,然后只保留每个类中未实现的不相关的两个方法。 问题:不整洁/丑陋
最佳答案
不用担心多了几个接口(interface),只要明确用途和目的即可。这 2 个选项有效:
PostClass
实现了RemovableReportable
,它扩展了Reportable
;和CommentClass
实现了HideableReportable
,后者扩展了Reportable
。PostClass
实现了Reportable
和Removable
;和CommentClass
实现了Reportable
和Hideable
。
但是将所有四个新方法添加到 Reportable
接口(interface)中并在每个类中保留两个未实现的方法是非常错误的,因为它不会导致代码干净且易于理解和使用。开发人员必须了解在每种情况下使用哪种方法,从而使您的代码更难使用和修改。如果某些开发人员调用了错误的方法会怎样?如果错误的方法什么都不做,错误可能会被忽视。如果它抛出异常,这只会在运行时捕获错误。如果它调用另一个方法,那么你有两种方法来做同样的事情,这也很糟糕且令人困惑。
接口(interface)中未使用的方法是一种代码味道,可能表示存在设计缺陷。
关于java - 如何正确设计界面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40796910/