【问题标题】:Is it possible for several classes to share an interface implementation?多个类是否可以共享一个接口实现?
【发布时间】:2014-12-20 05:15:34
【问题描述】:

我有许多已经实现的 java 类。我想为这些类添加一些行为;在某些情况下,所有类的这种行为可能是相同的。还假设我不能创建一个超类,因为所有的类都已经实现了。

我的问题是在这方面我有什么选择。

接口:是否有可能对于某些接口我实现它们一次并让类共享单个实现(因为在某些情况下,所有类所需的实现都是相同的)。这将避免在所有类中手动复制代码。

我想过定义一个抽象类并让这些类扩展抽象类;问题是子类在这种情况下不会是抽象类的有意义的扩展,因为它们没有形成有意义的层次结构。

谢谢。

【问题讨论】:

  • 好吧,您可以编写一个类来实现该行为,然后使该类成为每个类的私有成员,并将接口方法委托给该类。在 Java 中,这必须手动完成(您只需让封闭类调用私有类)。一些 IDE 会为您编写此委托代码。

标签: java interface abstract


【解决方案1】:

如果接口方法的实现不依赖于实现类的成员,并且您使用的是 Java 8,则可以为接口的方法提供默认实现。

【讨论】:

    【解决方案2】:

    您可以使用“委托”模式。使用定义要添加的行为的方法(或方法)定义新接口,并为每个行为变体定义一个实现类。让每个现有的类引用它需要的任何实现类的实例。 “委托模式”的维基百科页面有一些 Java 和其他语言的简单示例:https://en.wikipedia.org/wiki/Delegation_pattern

    【讨论】:

    • 谢谢。我认为委托模式可以完成这项工作。
    猜你喜欢
    • 1970-01-01
    • 2017-12-26
    • 2015-04-11
    • 2013-05-24
    • 1970-01-01
    • 2010-10-20
    • 1970-01-01
    • 2014-02-11
    • 1970-01-01
    相关资源
    最近更新 更多