【发布时间】:2016-02-25 12:25:13
【问题描述】:
假设我在ProjectA 中有一个名为Human 的类。在同一个项目的CreatureBuilder类中实例化。
现在我想在另一个项目中创建一个名为 Cyborg 的新类,即在 ProjectB 中。 ProjectB 在其导入中有 ProjectA,但 ProjectA 对 ProjectB 一无所知。
Cyborg extends Human,也必须被ProjectA的CreatureBuilder实例化(所以,Cyborg位于ProjectB,我从ProjectB调用CreatureBuilder来实例化Cyborg,但是@ 987654338@位于ProjectA,以及我的Human类)。
当CreatureBuilder 从ProjectA 实例化时,我需要一个逻辑来创建Human,并在CreatureBuilder 从ProjectB 实例化时创建Cyborg。
我认为可以通过在ProjectA 中使用getCreature() 方法创建接口来实现。此方法将在ProjectB 中被覆盖到return new Cyborg,然后传回ProjectA 中的CreatureBuilder。
还有其他建议吗?您认为最好的解决方法是什么?我可以改用反射 API 吗?
干杯!
【问题讨论】:
-
可能我没听懂,但是为什么不在两个项目中使用两个不同的CreatureBuilder类呢?
-
@FrankPuffer 好吧,“CreatureBuilder”是一个巨大的类,比如 5k 行或更多的代码。它的逻辑将来可能会改变,所以如果我遵循复制粘贴的路线,我将不得不更新这两个实现。
-
您不必复制/粘贴整个代码,只需将常用的东西放入一个通用的基类中即可。
标签: java oop design-patterns