抱歉标题错误。我的意思是:
(顺便说一下,我正在开发游戏引擎,A是场景,B是游戏对象,C是组件 )
我有3个班级:A,B,C
(A在B的标题中向前声明,并包含在B的实现中)
就像这样:A< - > B - < - > ç
我的情况是这样的:
我想使用C中的A方法(就像告诉主容器添加另一个B等)
〜我想创建一个可重用的函数,它在父对象的父对象上调用一个方法。
例如在C的派生类中,我不必关心C如何达到A,我只是调用C的Reach-A-and-do-something方法。
我的问题是我应该使用哪一个以及为什么(或者有更好的一个?):
在C:GetB()。GetA()。DoSomething()
C的DoSomething()调用B的DoSomething()调用A的DoSomething。
第一个看起来更好,但在C的实现中我只包括B的标题,其中 A只是前向声明的。所以我不能使用A的方法而没有在C中明确地包含它。(这是一个不好的做法,还是我应该包括它?)
第二个开销很大。如果我想使用A的XY方法,我必须在B中创建一个调用A的XY的XY方法,我必须在C中创建一个调用B的XY的XY方法。
所以我不知道如何从较低元素到达层次结构中的更高元素。
最佳解决方案是什么?
答案 0 :(得分:0)
在C:GetB()。GetA()。DoSomething()
C的DoSomething()调用B的 DoSomething()调用A的DoSomething。
我认为两者都是错的,因为从架构的角度来看,这种方法会在类之间产生强大的耦合。考虑使用事件调度程序,它为您的逻辑实现Observer模式。让组件向对方发送事件并对它们做出反应。
我不确定这会如何在你的情况下以性能为导向,但我强烈建议反对premature optimization,除非它显而易见。