我有一个结构,执行Update();在根元素上将递归遍历结构并执行Update();在所有子节点上。
这就像我想要的那样,但是,没有元素似乎有资格作为根元素。看起来像这样
这就是我最终要做的事情。我创建了一个名为GameHandlerRoot的类,除了像root一样,它什么都不做。调用Update();在此,一切都在更新。这可行吗?必须有比假货更好的解决方案。
具体来说,即使你能找到一个符合条件的元素,我也只对一个没有这样的元素的解决方案感兴趣。
提前谢谢。
答案 0 :(得分:1)
然后你有解决方案。它足以适合手头的任务。你没有明确的根元素。你需要一个。你添加了它。完成。
另一个显而易见的设计并不是为了拥有一个综合更新主页的唯一目的而嵌入一个根,而是一个可更新的项目的简单结构(例如列表)。例如。 updatable = [CharacterHandler, ItemHandler]
。然后迭代这个列表,比如globalUpdate()
函数。这样做的好处是不会尝试将可更新元素的聚合覆盖到OOP结构/类层次结构上。在“过去的日子里”,将所有内容踢入基于类的模型 - 视图 - 控制器 - 等级层次结构被认为是有道德的。但随着时间的推移,基于授权和聚合的方法已经获得了更多的货币,因为所有类别 - 所有时间设计的弱点变得更加明显。
但是将更新操作分解为非类结构本身就存在不足之处。六个单向,另外六个。您添加的根类似乎很好。
仅供参考,这类设计策略问题往往更好地提出programmers.stackexchange.com。 Stack Overflow更多的是“它不起作用!”问题,程序员更关注风格和战略选择。