【发布时间】:2012-06-26 18:38:48
【问题描述】:
假设方法M1 和M2 具有密切相关的职责
第一个例子:
如果
• M1 和 M2 在类 A 中定义(因此类 A 具有高度内聚性)
• B 类使用A.M1,C 类使用A.M2
那么
• A 与 B 和 C 类耦合
• 更改M1 的签名将只需要更改B,而不需要更改C
第二个例子:
如果
• M1 在类A1 中定义(因此B 与A1 耦合)
• M2 定义在 A2 类中(因此 C 与 A2 耦合)
那么
• 更改M1 的签名将只需要更改B,而不需要更改C
a) 据我了解,上一个示例中的类并不比第一个示例中的类更耦合!还是我错过了什么?
b) 据我所知,第一个示例中的类比第二个示例中的类更松散耦合,前提是:
-
我们假设更改
M1的签名也需要我们更改M2的签名,但我不认为这种情况经常发生?! -
或者如果
M1和M2都对相同类型T1的数据进行操作,那么用T2替换T1将需要同时更改M1和M2?! -
或者如果我们假设由于
M1和M2具有密切相关的职责,那么更改M1的可能性要大得多,通常需要更改M2(即使M1不直接或间接调用M2)?! -
或者如果我们假设由于
M1和M2具有密切相关的职责,某些类需要M1和M2的可能性要大得多(因此具有M1和@987654365单个类中的@减少耦合)?!
c) 是否有任何其他原因为什么在 A 内定义 M1 和 M2(而不是在 A1 和 A1 内定义 M1 和 M2 在 A2 内)会减少耦合?
注意 - 我知道由于更易于维护和可重用性,我们应该拥有高度内聚的模块
谢谢
【问题讨论】:
标签: oop coupling design-principles cohesion