将功能注入两个 classes 没有共同的 super class

Inject functionality into two classes without common super class

我知道我想做什么听起来很愚蠢但是听着:

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

现在我面临以下问题:

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

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

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

不确定这是否是好的做法,但是如果 TestPlayerTestMob 都持有对 TestEntity 的引用而不是从它继承并且在每个各自的方法中调用相应的方法怎么办TestEntity 里面的方法。 #CompositionOverInheritance

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