首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对象之间的CBO耦合

对象之间的CBO耦合
EN

Stack Overflow用户
提问于 2014-12-17 07:01:19
回答 3查看 14.6K关注 0票数 7

我不明白“CBO-对象类之间的耦合”到底是什么意思。我找到的定义太短了,我想我遗漏了什么,所以如果你能帮我举个例子,那就太好了。

下面是我找到的定义:“对象类之间的耦合是它耦合到的其他类的数量的计数。”

提前谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-04-26 20:02:18

对象间耦合(CBO)是对耦合到特定类的类数量的计数,即一个类的方法调用另一个类的方法或访问另一个类的变量。这些调用需要在两个方向上计数,因此类A的CBO是类A引用的类集合和引用类A的那些类的大小。由于这是一个集合-即使引用在两个方向上操作,每个类也只计数一次,即如果A引用B和B引用A,则B仅计数一次。

这是这里给出的定义- www.virtualmachinery.com/sidebar3.htm

链接中有一些更多的细节-以及关于Chidamber和Kemerer指标的有趣的一般性讨论- CBO是这些指标的一部分。

票数 17
EN

Stack Overflow用户

发布于 2016-02-27 04:42:26

下面是一个使用UML的示例,它补充了其他答案:

备注:

  • CBO并不关心依赖项的方向。D的CBO为1,因为C依赖于它,即使D不依赖于其他类。B和C是相似的情况。
  • 耦合可以通过属性(组合)、关联、局部变量、实例化或注入依赖项(方法的参数)来实现。
票数 11
EN

Stack Overflow用户

发布于 2014-12-17 07:36:31

耦合是指一个类(A)依赖(知道、需要、使用)另一个特定的类(B)。这意味着当您更改A使用的公共成员B时,您也必须更改A。你想要类型之间的低耦合,这样你就可以改变类而不会有很多副作用。通常,耦合与糟糕的封装一起出现,所以你会有A知道的信息,这些信息应该是B的私有信息。

有些类型足够通用(比如C#中的List ),您可以直接使用它们,而不用担心副作用。但是,无论您为自己的应用程序定义了什么类,您都需要意识到这些类可能会发生变化。因此,在许多情况下,您对B的某些行为(或属性)更感兴趣,而不是A使用整个B。在这些情况下,最好提取一个接口(以抽象所需的行为),然后A将只知道抽象,而B将实现它。这允许您有多个具体的实现(每次处理数据库、网络、导入/导出等事情时都很有用),而A不会知道B。

因此,A可以在不知情的情况下使用B、C、D等中的任何一个,只要它们实现了接口,并且您可以更改B、C、D中的内容,只要这不会违反公共契约(接口)。

虽然我们通常希望我们的类是解耦的,但是内聚(就像在一起工作),在许多情况下耦合不会真正伤害你,因为解耦可能需要更多的努力而不是提供价值。这取决于开发人员来识别这些情况并做出适当的决定。然而,这是有经验的,所以同时,尽量不要太多地耦合你的类。

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

https://stackoverflow.com/questions/27515541

复制
相关文章

相似问题

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