我读过很多定义,但仍然不明白-- External Coupling和Common Coupling之间的真正区别是什么?示例,从这里定义
当两个模块共享外部强加的数据格式、通信协议或设备接口时,就会出现外部耦合。公共耦合:如果两个模块通过一些全局数据项共享信息,它们是共同耦合的。
据我所知,如果Class A和Class B都使用一些外部.txt file,则这个情况对应于External Coupling和Common Coupling。有人能给出一个明确的例子吗?
发布于 2022-11-24 23:27:38
你引用的外部耦合的定义现在很普遍,但我不知道它是从哪里来的。据我所知,不同类型的耦合最初被定义为格伦·迈尔斯在本书中。这些概念是为Cobol和Fortran这样的语言构思的,有时很难理解它们,因为它们所指的特性在现代语言中是非常不同或不存在的。
根据Myers的定义,外部耦合和公共耦合之间没有太大的区别,这似乎只是一个引用单个全局变量与包含多个数据的整体共享范围的问题:“外部耦合类似于公共耦合,但在外部耦合中,模块之间的引用是对单个数据项的引用,而不是对数据结构的引用”。
当前的外部耦合定义不是指全局范围,而是指应用程序本身外部的事物:数据库、硬件、外部库等。在我看来,在这个意义上,.txt文件的示例将是外部耦合。假设应用程序的许多类读取.txt文件。所有这些类都耦合到特定的文件格式。如果由于某种原因需要更改文件类型,则需要修复代码不同部分中的内容。
减轻这种形式的耦合的方法是尽可能减少您的应用程序与外部世界的联系站点。也许您只能让一个类C读取.txt文件,而其他类A和B则使用该读取的输出。如果您需要更改源格式,您可以只更改C的实现,A和B可以一如既往地使用它的输出(只要C保持其接口)。您可以通过研究适配器模式和六角形建筑来了解这方面的更多信息。
https://stackoverflow.com/questions/71841533
复制相似问题