假設方法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