构建由许多不同类型的项目组成的系统模型的常见解决方案是创建一个模块化系统,其中每个模块负责特定类型。例如,将有用于袋熊的模块 WombatModule:IModule,其中 IModule 接口具有 GetCount()(查找袋熊数量)和 Update()(更新所有袋熊的状态)等方法。
更面向对象的方法是为每个项目类型设置类并为每个项目创建一个实例。这将使类 Wombat:IItem 具有 Update() 之类的方法(以更新这个袋熊)。
从代码的角度来看,差异可以忽略不计,但运行时差异很大。面向模块的解决方案当然更快:更少的对象创建,更容易优化所有袋熊通用的操作。
当类型和模块的数量增加时,问题就来了。要么你失去了大部分性能优势,因为每个模块只支持几个项目,要么模块的复杂性增加以适应一种通用类型的稍微不同的项目——比如胖袋熊和瘦袋熊。或两者。
至少有一次我看到它退化为糟糕的状态,而 WombatModule 所做的只是保留隐藏的 Wombat 对象的集合并循环运行它们的方法。
当性能问题比长期开发问题更小时,您能否确定使用模块而不是每个项目对象的任何架构原因?可能还有另一种可能性我失踪了?