【问题标题】:Avoiding bodyless abstract methods when implementing an interface - java实现接口时避免无体抽象方法 - java
【发布时间】:2011-12-31 10:12:14
【问题描述】:

当我想为一个简单的 WindowListener 实现一个接口时真的很烦人,但完成工作的唯一方法是实现所有方法,只留下一个没有主体的方法。看起来真的很丑而且可以避免..

在这种情况下是否有某种设计模式可以避免无主体实现?

我尝试了策略/策略模式,但最终得到了相同的无主体方法,除了更多的 OOP 方式。

【问题讨论】:

    标签: java interface methods abstract


    【解决方案1】:

    使用WindowAdapter 并仅覆盖您需要的方法。更多关于这个here

    【讨论】:

    • 谢谢,那是我的想法!说真的,我记得我不久前就知道了。
    • 嗯,这就是缺乏多重继承的地方。我正在扩展 JFrame,所以现在我必须声明一个虚拟类来扩展 WindowAdapter 并将其传递给 addWindowListener() 这是在我的主要课程中。我本可以通过它并避免一个虚拟类,如果我可以同时扩展 JFrame 和 WindowAdapater..
    • @Sam Ismail:这通常是使用匿名类的地方,这会产生相对较少的代码开销。
    【解决方案2】:

    WindowListener 的API 文档中,提到了一个类WindowAdapter 来实现接口:

    这个类中的方法是空的。此类的存在是为了方便创建侦听器对象。

    【讨论】:

    • 谢谢,我没有意识到
    【解决方案3】:

    是的,对于听众来说,通常有一个 AbstractXXXAdapter 定义了所有方法(带有空主体)。然后,当您使用自己的侦听器时,您只需将其子类化并实现您需要的东西。有些框架提供这些,有些则不提供,因此您可能必须自己做。

    【讨论】:

    • 如果是WindowListener,这是WindowAdapter
    • 谢谢,我没注意他们问的是哪个框架。
    猜你喜欢
    • 2011-02-25
    • 2011-11-20
    • 2013-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多