メソッドM1
を想定し、M2
強く関連する責任を負う
最初の例:
もしも
• M1
andM2
はクラス内で定義されますA
(したがって、クラスA
は非常にまとまりがあります) 。
•クラスのB
使用A.M1
とクラスのC
使用A.M2
それから
•とクラスA
の両方に結合されているB
C
• の署名を変更する には、M1
でのみ変更が必要ですが、では必要ありB
ません。C
2 番目の例:
もしも
•M1
クラス内で定義されているA1
(したがってB
と結合されているA1
)
•M2
クラスで定義されているA2
(したがって、C
と結合されているA2
)
それから
• の署名を変更するには、M1
でのみ変更が必要ですが、では必要ありB
ません。C
a) 私の理解では、最後の例のクラスは、最初の例のクラスよりも結合されていません! または、何か不足していますか?
b)私が知る限り、最初の例のクラスは、次の場合にのみ2番目の例のクラスよりも疎結合です。
M1
の署名を変更するには、 の署名も変更する必要があると想定していM2
ますが、そう頻繁に起こるとは思いませんか?!または、 と の両方が同じタイプ T1 のデータ
M1
をM2
操作する場合、T1 を T2 に置き換えるには、M1
とM2
?!の両方を変更する必要があります。または、密接に関連する責任があるため、変更する
M1
と変更が必要になるM2
可能性がはるかに高いと仮定すると(直接的または間接的に呼び出さなくても)?!M1
M2
M1
M2
または、密接に関連する責任があるために、一部のクラスが と の両方を必要とする可能性がはるかに高いと仮定すると(そのため、
M1
とを単一のクラスに持つことで結合が減少します)?!M2
M1
M2
M1
M2
c) ( withinとwithinを定義する代わりに) M1
and withinを定義すると結合が減少する理由は他にありますか?M2
A
M1
A1
M2
A2
注 - メンテナンスと再利用が容易なため、凝集性の高いモジュールが必要であることは承知しています。
ありがとうございました