java - 很少使用抽象方法的抽象类 - 我应该具体化吗?

标签 java

假设我有一个名为 GUIElement 的类,由以下代码描述:

public abstract class GUIElement {
    public abstract void onScroll();
    //Other methods such as getX(), getY(), onClick() etc.
}

所有扩展此方法的 GUI 元素显然都被迫为 onScroll 编写具体代码,前提是它们是一个具体的类,但很少有人真正使用此 onScroll 方法,因为它只在长 GUIText block 之类的情况下才方便。

那么我的问题是,在这种情况下最佳做法是什么?继续强制所有子类编写代码,即使大部分代码都是空的,或者像这样具体化:

public abstract class GUIElement {
    public void onScroll() {}
    //Other methods such as getX(), getY(), onClick() etc.
}

并且有几个使用它的类只是覆盖它。 或者也许还有其他更好的选择?

最佳答案

如果只有少数类需要实现该方法,则Adapter Pattern是一个不错的选择。这就是你的第二种方法基本上是什么。在父类中有一个空的实现,只有那些需要此功能的子类可以覆盖它,但它们不会被迫这样做。

看看MouseAdapter例如在 AWT 包中。它实现了MouseListener接口(interface),但将所有方法留空。然后子类可以选择是否重写这些方法。

关于java - 很少使用抽象方法的抽象类 - 我应该具体化吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44863231/

相关文章:

java - 使用@Secured 注释保护 MVC Controller 方法

java - 在 JTable 中编辑期间更改值

java - 为什么我可以将 web 服务用作 java 应用程序,但不能用于 struts2

Java 打印对象 按类型列出服务

java - 如何在 Java 应用程序中加载和播放音频文件

java - SWT:显示菜单项的工具提示

java - 多个参数化 JUnit 测试的最佳实践

java - jLayer——播放 mp3 导致文件开头失真

java - Switch 差异的语法

java - 在 jython jar 中导入 Flask 模块