gpt4 book ai didi

java - 将功能注入(inject)两个没有公共(public)父类(super class)的类

转载 作者:行者123 更新时间:2023-12-02 03:26:14 25 4
gpt4 key购买 nike

我知道我想做的事情听起来很愚蠢,但听着:

我有抽象类EntityPlayer(扩展Entity)和非抽象类TestPlayer(扩展Player)和TestMob(扩展Entity)。

现在我面临以下问题:

我想在 Entity 中实现一些抽象方法,并在 TestPlayerTestMob 中实现相同的功能。理论上,我可以创建另一个类 TestEntity (扩展 Entity)并让 TestPlayerTestMob 继承它。但随后 TestPlayer 无法再继承 Player 了。

直接在 Entity 内部实现该功能不是一种选择,因为并非所有子类都具有此功能。

除了重复代码之外,什么可以被认为是可接受的解决方案?

最佳答案

您还可以使用装饰器模式 ( https://en.wikipedia.org/wiki/Decorator_pattern )。您有一个接口(interface) Entity 和两个实现它的类:ConcreteEntityDecorator,其中 ConcreteEntity 具有默认逻辑和Decorator 具有对 Entity 的引用并委托(delegate)所有方法调用。然后你可以扩展Decorator。您拥有的是 new Player(new TestEntity(new ConcreteEntity)))

,而不是 new TestPlayer()

关于java - 将功能注入(inject)两个没有公共(public)父类(super class)的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38836270/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com