这个问题实际上出现了很多。使用此实例模型视图。我有2个物件。模拟对象和渲染对象。

类ObjectRSim(对象,指定为Render Sim)类似于:

class ObjectRSsim {
   var simObject:ObjectSim;
}


ObjectRSim,使用ObjectSim的属性/无效。

有些对象继承了ObjectRSim和ObjectSim:

PosObjectRSim和PosObjectSim(位置对象..)

class PosObjectRSim extends ObjectRSim {
   var posSimObject:PosObjectSim;
}


要么...

class ObjectRSim {
   var simObject:Dynamic; //Dynamic is untyped Type from haxe, the compiler does not check calls to a Dynamic object.
}


我应该在ObjectRSim层次结构类中对ObjectSim继承层次结构中的每种类型进行引用,还是应该只使用simObject:Dynamic?

最佳答案

在那种情况下使用Dynamic是完全错误的。它通常很慢(对于我猜不是JavaScript的每个haxe目标),没有内联,通常仅用于与基础平台进行交互或进行序列化(YAML,JSON等)。

谈论解决问题...

如果没有计划成千上万个这样的对象,那么我可能只是另一个用于低级类对象的字段。从OOP的角度来看,这不是最清晰的方法,但是它经常为我带来更简单明了的代码。

投射是另一种选择(我个人不喜欢)。

参数化可能是处理此问题的最佳方法,但是我不确定是否已经在haxe中进行了类型受限的参数化。

关于java - 引用父类(super class)的首选方式(类型化语言),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10891536/

10-11 17:54