“低耦合和高凝聚力”是什么意思

我对理解low in coupling and high in cohesion的陈述有困难。 我已经search了很多关于这方面的知识,但仍然觉得很难理解。

我所理解的是High cohesion意味着我们应该有专门的课程去完成一个特定的function。 希望这是正确的? 就像专门用于validation信用卡的信用卡validation类一样。

而且还不明白Coupling是什么意思?

我相信是这样的:

凝聚力是指一个模块/类的元素所属的程度,build议所有相关的代码应该相互接近,所以我们应该尽量争取高度的凝聚力,把所有相关的代码绑定在一起。 它与模块/类中的元素有关。

耦合指的是不同模块/类别相互依赖的程度,build议所有模块应尽可能独立,这就是为什么低耦合的原因。 它与不同模块/类中的元素有关。

在现实生活中,软件工程中的凝聚力是多less元素构成一个整体(在我们的例子中是一个类),可以说它们实际上属于一个整体。 因此,这是衡量软件模块的源代码所expression的每个function有多强烈的相关性的度量。

从OOangular度来看凝聚力的一种方法是,如果类中的方法使用任何私有属性。

现在讨论比这个更大,但是高聚合 (或者凝聚力的最佳types – function凝聚力)是当一个模块的一部分被分组时,因为它们都对模块的一个明确定义的任务有贡献。

用简单的话来说,是多less一个组件(再一次想象一个类,虽然不一定)知道另一个组件的内部运作或内部组件,即它知道另一个组件有多less知识。

松耦合是将系统或networking中的组件相互连接的一种方法,以便这些组件在实际可能的最小程度上相互依赖。

我写了一篇关于这个的博客文章 。 它将详细讨论所有这些,并举例说明。这也解释了为什么要遵循这些原则的好处。

在软件devise中, 高度凝聚意味着class级应该做好一件事情,做好一件事情。 高度凝聚力与单一职责原则密切相关。

低耦合表明类应该具有最小可能的依赖性。 此外,必须存在的依赖关系应该是周依赖关系 – 喜欢依赖于接口,而不是依赖于具体的类,或优先权组合inheritance。

高内聚和低耦合给我们更好的devise代码,更容易维护。

低耦合是在两个或多个模块的情况下。 如果一个模块中的变化导致其他模块中的许多变化,那么它们被认为是高度耦合的。 这是基于接口的编程帮助。 模块中的任何更改都不会影响其他模块,因为它们之间的接口(交互的均值)没有改变。

高凝聚力 – 将相似的东西放在一起。 所以一个class级应该有方法或行为来做相关的工作。 只是给一个夸大的坏例子:一个List接口的实现不应该有与String相关的操作。 String类应该有与String相关的方法,字段,同样,List的实现也应该有相应的东西。

希望有所帮助。

长话短说,低耦合,据我所知,这意味着组件可以换出而不影响系统的正常运行。 Basicaly将您的系统模块化为可以在不破坏系统的情况下单独更新的function组件

你有智能手机吗? 有一个大的应用程序或很多小的? 一个应用程序是否回复另一个? 您可以在安装,更新和/或卸载另一个应用程序时使用一个应用程序吗? 每个应用程序是独立的是高度凝聚力。 每个应用程序独立于其他应用程序是低耦合。 DevOps支持这种体系结构,因为这意味着您可以在不中断系统整体的情况下进行独立的连续部署。

低耦合和高内聚是推荐的现象。

耦合意味着各种模块相互依赖的程度以及其他模块如何在改变模块的某些/相当大的function时受到影响。 强调低耦合,因为依赖性必须保持低,以便对其他模块做出最小/可忽略的改变。

一个例子可能会有所帮助。 设想一个产生数据并将其放入数据存储的系统,可以是磁盘上的文件,也可以是数据库。

通过将数据存储代码从数据生成代码中分离出来,可以实现高内聚性。 (并且实际上将磁盘存储与数据库存储分开)。

低耦合可以通过确保数据生成没有任何不必要的数据存储知识(例如,不要求数据存储关于文件名或数据库连接)来实现。

inheritance或泛化是高度耦合的例子,即高度相互依赖。 我的意思是,在inheritance中,父类通常定义其子类使用的基本function,父类方法中的更改直接影响其子类。 因此我们可以说阶级之间有更大程度的相互依赖。

实现或使用接口是一个高度内聚的例子,即相互依赖性低。 这意味着一个接口为任何实现它的类提供了一个契约,但是每个类都有权以自己的方式实现在接口中声明的方法,并且在一个类中声明的方法的变化不会影响任何其他类。