Architecture 建模体系结构

Architecture 建模体系结构,architecture,modeling,modularity,Architecture,Modeling,Modularity,构建由许多不同类型的项目组成的系统模型的一个常见解决方案是创建一个模块化系统,其中每个模块负责特定的类型。例如,将有一个用于袋熊的模块:IModule,其中IModule接口具有GetCount()和Update()等方法(用于查找袋熊的数量)和Update()(用于更新所有袋熊的状态) 更面向对象的方法是为每个项目类型创建类,并为每个项目创建实例。这将使类Wombat:IItem具有类似Update()的方法(用于更新这一个Wombat) 从代码的角度来看,差异是可以忽略的,但运行时是显著不同

构建由许多不同类型的项目组成的系统模型的一个常见解决方案是创建一个模块化系统,其中每个模块负责特定的类型。例如,将有一个用于袋熊的模块:IModule,其中IModule接口具有GetCount()和Update()等方法(用于查找袋熊的数量)和Update()(用于更新所有袋熊的状态)

更面向对象的方法是为每个项目类型创建类,并为每个项目创建实例。这将使类Wombat:IItem具有类似Update()的方法(用于更新这一个Wombat)

从代码的角度来看,差异是可以忽略的,但运行时是显著不同的。面向模块的解决方案当然更快:对象创建更少,更容易优化所有袋熊通用的操作

当类型和模块的数量增加时,问题就会出现。要么因为每个模块只支持几个项目而失去了大部分性能优势,要么模块的复杂性增加,以适应同一个一般类型的稍有不同的项目,比如胖和瘦袋熊。或者两者兼而有之

我至少见过一次,当WombatModule所做的只是保存一组隐藏的Wombat对象并在循环中运行它们的方法时,它会退化到糟糕的状态


当性能问题比长期开发问题小时,您能否确定使用模块而不是每项对象的架构原因?可能还有另一种可能我遗漏了?

我在一家
嵌入式软件公司工作,我们的
代码库相当大。代码库是用模块设计的,这些模块执行特定的功能并维护一些对象——还有一些对象只是作为独立对象存在的。我们在方法中看到的最大问题是区分模块的边界。随着时间的推移,我们的模块往往会变得不必要的复杂,并慢慢发展到执行最初超出其边界的功能。我想说,最好的方向是模块化设计和实现非常具体的对象,并尽全力不让模块超出您的预期。

我为一家
嵌入式软件公司工作,我们的
代码库相当大。代码库是用模块设计的,这些模块执行特定的功能并维护一些对象——还有一些对象只是作为独立对象存在的。我们在方法中看到的最大问题是区分模块的边界。随着时间的推移,我们的模块往往会变得不必要的复杂,并慢慢发展到执行最初超出其边界的功能。我想说的是,最好的方向是模块化设计和实现非常具体的对象,并尽全力不让模块超出您的预期