java traits or mixins pattern?

2022-09-02 08:52:49

有没有办法在java中模拟mixins或traits?基本上,我需要一种方法来执行多重继承,以便我可以向多个类添加通用业务逻辑


答案 1

不是你想做的方式。有效的Java建议您“更喜欢组合而不是继承”。这意味着您将公共逻辑移动到其他类并委托。这就是你如何解决Java中缺乏多重继承的问题。


答案 2

我会将所有业务逻辑封装到一个新类中,并让每个需要调用该类的类。如果你需要一个单根的继承制来调用 的类,你也必须创建一个接口(?)BusinessLogicBusinessLogicBusinessLogicBusinessLogicInterface

在伪代码中:

interface BusinessLogicInterace
{
    void method1();
    void method2();
}

class BusinessLogic implements BusinessLogicInterface
{
    void method1() { ... }
    void method2() { ... }
}

class User 
    extends OtherClass 
    implements BusinessLogicInterface
{
    BusinessLogic logic = new BusinessLogic();

    @Override
    void method1() { logic.method1(); }

    @Override
    void method2() { logic.method2(); }
}

这不是解决缺乏多重继承的最漂亮的实现,当接口有很多方法时,它会变得非常麻烦。最有可能的是,您需要尝试重新设计代码以避免需要 mixin。


推荐