这个问题实际上出现了很多。使用此实例模型视图。我有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/