首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如果一个实体是组成的,它仍然是上帝的对象吗?

如果一个实体是组成的,它仍然是上帝的对象吗?
EN

Software Engineering用户
提问于 2013-10-30 01:20:25
回答 2查看 460关注 0票数 3

我正在开发一个配置硬件的系统。不幸的是,硬件有很多种类,这意味着有各种各样的功能和配置,这取决于软件所连接到的特定硬件。

为了解决这个问题,我们使用了基于组件的实体设计,其中“硬件”类本身是一个非常薄的容器,用于根据可用的功能/配置在运行时组合的组件。这很好,而且设计本身在其他地方也很有效(特别是在游戏中)。

问题是,这个软件所做的就是配置硬件。因此,几乎所有的代码都是硬件实例的一个组件。虽然使用者只针对组件的强类型接口工作,但是可以说,表示硬件实例的类是一个上帝对象。

如果您想对硬件做任何事情,您可以查询一个接口并使用它。

所以,即使一个对象的组件是模块化的和解耦的,它们的容器是否是上帝的对象和反模式的缺点呢?

EN

回答 2

Software Engineering用户

回答已采纳

发布于 2013-10-30 03:51:02

根据维基百科的上帝对象条目,“上帝的对象是面向对象的类比,它没有在过程编程语言中使用子程序,或者使用太多的全局变量来存储状态信息。”换句话说,它是一个紧密耦合的混乱,被包裹在一个对象中。

根据您的看法,硬件类是“一个非常薄的组件容器”。我不相信一个非常薄的容器有任何办法成为一个紧密耦合的混乱,除非它是紧密耦合到它包含的组件。您将组件描述为“基于可用的功能/配置在运行时组合”,这意味着有多个可能的组件可以安装在容器的一个槽中,因此您的容器必须与其组件分离。

所以,除非我误解了您的描述,否则您的硬件类不是上帝对象。在运行时,它可能非常大,但我看不出在运行时大如何会成为一个问题,只要单个片段和将它们组合在一起的方法都不是紧密耦合的混乱。

票数 11
EN

Software Engineering用户

发布于 2013-10-30 01:49:48

逻辑和复杂性生活在哪里?如果最外层的Hardware实例主要是外观或适配器,而子组件具有大部分的逻辑和行为,那么我会说“不行”。

可能还会有其他批评,但对我来说,“上帝对象”更多的是一个类,它的方式“太多”代码行做“太多”不同类型的事情。

票数 4
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/215956

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档