java - 如何正确设计界面

标签 java design-patterns interface

我有两个类(class)。我们称它们为 PostClassCommentClass。这两个类都实现了 Reportable 接口(interface):

public interface Reportable {

    void report();

    boolean isReported();

    . . .

现在我需要为每个类添加两个额外的方法。这些方法在逻辑上适契约(Contract)一个接口(interface),但需要有不同的名称。例如:

PostClass 将有方法 -> remove(), restore()

CommentClass 将有方法 -> hide(), show()

问题:设计此更改的首选方法是什么?选项如我所见:

  1. 创建一个附加接口(interface)来扩展Reportable 接口(interface)。 问题:接口(interface)太多
  2. 将所有四个新方法添加到 Reportable 接口(interface)中,然后只保留每个类中未实现的不相关的两个方法。 问题:不整洁/丑陋

最佳答案

不用担心多了几个接口(interface),只要明确用途和目的即可。这 2 个选项有效:

  1. PostClass 实现了 RemovableReportable,它扩展了 Reportable;和 CommentClass 实现了 HideableReportable,后者扩展了 Reportable

  2. PostClass 实现了 ReportableRemovable;和 CommentClass 实现了 ReportableHideable

但是将所有四个新方法添加到 Reportable 接口(interface)中并在每个类中保留两个未实现的方法是非常错误的,因为它不会导致代码干净且易于理解和使用。开发人员必须了解在每种情况下使用哪种方法,从而使您的代码更难使用和修改。如果某些开发人员调用了错误的方法会怎样?如果错误的方法什么都不做,错误可能会被忽视。如果它抛出异常,这只会在运行时捕获错误。如果它调用另一个方法,那么你有两种方法来做同样的事情,这也很糟糕且令人困惑。

接口(interface)中未使用的方法是一种代码味道,可能表示存在设计缺陷。

关于java - 如何正确设计界面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40796910/

相关文章:

java - 传感器驱动程序中的统一接口(interface)

generics - 语法 : multiple generic constraints and inheritance, 接口(interface)

python - 确保两个 Python 类具有相同名称的属性

design-patterns - IoC 服务的抽象类或接口(interface)?

wpf - 需要有关在 WPF 中实现 UI 的建议

java - 谁/什么实现了我可以直接使用的接口(interface)?

java - Java 和 C++ 之间的进程间通信

java - 我怎样才能使这段代码更有效地找到一对总和?

java - volatile 是否会阻塞或涉及上下文切换?

java - HttpURL连接 : Already connected after redirect