我目前正在设计一个场景图,但遇到了一个问题。
创建场景图时,我创建了一个展开的链表来保存子节点。场景图被设计为允许使用自定义分配器,场景被初始化并作为成员变量携带。
就目前而言,我有许多调用make*
场景的函数,以及节点可能具有的任何参数(即。makeGroup(scene, null)
)。我的问题是:我可以使用哪些方法来创建节点,同时消除不必要的膨胀?
到目前为止,我已经提出了两种解决方案:
仅在创建和销毁时将分配器传递给节点。节点本身不保留对分配器的引用。只有创建它的场景才会这样做。这在创建过程中需要一些额外的噪音,尽管它可以很容易地隐藏在
make
函数中。允许节点携带对分配器本身的引用,增加 Node 类中的依赖关系,以及向该类添加另一个成员。