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