假设方法M1
和M2
强烈相关的职责高凝聚力如何帮助我们减少耦合?
第一个例子:
如果
•M1
和M2
被A
类中定义(因此A
类是高粘性)
•类B
使用A.M1
和类C
使用A.M2
然后
•A
被加上两B
和C
类
•改变M1
签名将只需要在B
的变化,而不是在C
第二个例子:
如果
•M1
被A1
类(因此B
耦接A1
)内限定
•M2
定义withing类A2
(因此C
耦接A2
)
然后
•改变M1
签名将只需要在B
的变化,而不是在C
一)据我了解,在最后一个例子类没有更多的耦合比在第一个例子中的类!或者我错过了什么?
B)据我所知,在第一个例子中的类更加松散耦合比在第二个例子中,仅当:
我们假设改变
M1
签名也需要我们改变M2
的签名,但我没有经常看到这种情况?!,或者如果两者
M1
和M2
上相同类型T1的数据进行操作,然后用T2代替T1将需要在两个M1
和M2
变化?!,或者如果我们假设,由于
M1
和M2
有密切的相关责任,该机会是远远大于改变M1
往往需要M2
也被改变(即使M1
不直接或间接调用M2
)?,或者如果我们假设,由于
M1
和M2
有密切相关的责任,机会是远远大于一些类既需要M1
和M2
(这样编在一个班里降低耦合为M1
和M2
)?
c)是否有任何其他原因定义内A
M1
和M2
(而不是定义内A2
内A1
M1
和M2
)会降低耦合?
注 - 我知道,我们应该有higly凝聚力模块由于易于维护和可重用性
谢谢
“...更改M1将导致ClassB访问ClassA中的其他方法”我没有关注你。为什么改变M1会导致B类访问A类中的其他方法? – user1483278
这是因为A高度凝聚力(相反,如果A高度凝聚力,所有这一切都将成真 – vedant1811
“......所有这一切都将是真实的”您是指如果A具有高度凝聚力,我在b)下所做的所有假设都是真实的? – user1483278