耦合与内聚
耦合和内聚是Java(以及所有其他面向对象语言)中的两个概念。耦合度量每个程序模块对其他程序模块的依赖程度。内聚性衡量模块中每个函数的关联程度。实际上,任何面向对象的语言(包括Java)都有两个主要目标,即增加内聚性和减少耦合性,以便开发最有效的程序。这两个软件工程度量是由Larry C***tantine开发的,目的是降低修改和维护软件的成本。
什么是凝聚力?
内聚性衡量程序模块中每个函数的关联程度。结构良好的类导致高度内聚的程序。如果某个类正在执行一组高度相关的函数,则该类被称为具有内聚性。另一方面,如果一个类执行一堆完全无关的功能,这意味着该类根本就没有内聚性。理解不具有内聚性并不意味着整个应用程序没有所需的功能,这一点很重要。只是,如果没有内聚性,就很难管理这些功能,因为随着时间的推移,应用程序的复杂性不断增加,它们将分散在许多错误的地方。维护、修改和扩展分散在代码中的行为是非常乏味的,即使对于经验最丰富的程序员也是如此。
什么是耦合?
耦合度量每个程序模块对其他程序模块的依赖程度。两个对象之间的交互是因为存在耦合。松耦合程序具有很高的灵活性和可扩展性。强耦合永远不是好的,因为一个对象可以高度依赖于另一个对象。当代码被修改时,这是一个噩梦,因为高耦合意味着程序员甚至需要为一个单独的行为修改而在多个地方编写代码。强耦合总是导致程序具有较低的灵活性和较小的可伸缩性/可扩展性。然而,在Java这样的编程语言中,完全避免耦合是不可能的。但建议程序员尽最大努力减少耦合。还可以使用一些耦合来帮助对象之间进行交互,而不妨碍其可伸缩性和灵活性。
耦合和内聚有什么区别?