.net - 一个类中有多少对象太多了?

标签 .net vb.net oop object

我对 OO 编程的概念还很陌生——实际上我还是个学生,所以一般都在编程。我目前在一个部门实习,让我编写一个新的结构,这可能是他们所有应用程序的基础。所以我相信我有 OO 背后的想法,你创建“基本构建块”,然后扩展,扩展和扩展,直到你到达最复杂的对象(暂时)。

我需要将所有这些“高级”对象合二为一,但有多少是太多了?如果它需要所有这些“零件”,我可以在这个更大的物体里面有 100 个物体吗?

我真的希望这个问题对每个人都有意义。我相信答案也不会是一个明确的答案,但我只需要一个经验法则。如果有更好的设计/编程技术,我真的很讨厌在 1 个大对象中包含 100 个对象。

谢谢你。

编辑 1:非常感谢您的回复,但我还是有点不清楚。我已经标记了一个答案,因为我觉得我可以继续我所拥有的但是......

让我继续我的人类例子。一个人由许多部分(或物体)组成,每个部分也由部分组成,一直到单个细胞。

人 --> ARM --> 手 --> 手指 --> 拇指 --> 骨骼 --> 骨细胞

人类:ojbLeft_Arm、objRight_Arm、objLeftLeg、objRightLeg、objBrain、objHeart、objLeft_Eye、objRight_Eye……明白我的意思吗?人体物体里面有多少物体太多了?显然,这个 Human 对象将被认为是巨大的,因为 Human 非常复杂。你是否将 Arm 和 Leg 对象分解为 objLimbs 然后存储它们?

我想另一个问题是:如果你不想要很多对象,你如何避免它们?

最佳答案

单个对象内有 100 个对象并不是严格不合适的,但这绝对表明可能有更好的方法来做到这一点。考虑将相似的对象分组到复合对象中,其中功能在最终“ super 对象”中的使用是相似的。根据经验,您在类中引用的对象数量是对该对象复杂性的(粗略)估计; 100 表示复杂性太高。请注意,您可以通过将对象组合成复合对象来降低有效复杂性,从而增加整体对象计数,但减少“ super 对象”内的直接引用计数。

针对 OP 的编辑和问题进行编辑:分组的关键实际上与您的预期用途和问题域有关。考虑你的人类榜样;对象模型的适当分割实际上取决于您的数据模型将用于的用途。这里的关键是认识到你不是试图代表所有可能的对象或潜在的现实;您正在创建适合您预期用途的表示。例如,如果您正在为心脏病专家建模一个 Human,那么拥有一个 Human 对象可能是合适的,在该对象下您将拥有一个 Heart 对象、一个 Circulatory System 对象等;在 Heart 对象下,您可能有左心室、右心室等。但是,对于牙医来说,您的模型仍然会在顶部有一个 Human,但该 Human 可能在下一个级别有一个 Teeth 集合; dentry 可能包括用于犬齿、门牙等的物体。

这里的关键是底层对象(Human)是一样的;表示完全不同。您的心脏病专家不太关心您的 dentry ,您的牙医也不太关心您的心室。 用法定义表示。 因此,对于您的情况,您必须准确确定您的用法是什么,并且该用法可以(希望)为您的表示定义一条清晰的路径。

关于.net - 一个类中有多少对象太多了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6551267/

相关文章:

javascript - 从更新面板中调用“window.open”

vb.net - 类型名称中的反引号在 Visual Studio 调试器中意味着什么?

Javascript OO引用这个

.net - 在表单加载时将引用的 DLL 复制到本地目录

c# - 如何在列表相同的 Dictionary<string, List<int>> 中按 List<int> 分组?

.net - 使用 VB.NET 2008 进行文字转语音

javascript - 使用递归检索属性 'x' 内所有对象的属性 'y'

python - __dict__ 对于不显示 @property 属性的对象

.net - 是否可以持有Paypal Adaptive Payment(链式支付)?

c# - 通过 app.config 配置线程池最大线程数?