GRASPパターン[疎結合性パターン]

疎結合性パターン(Low Coupling)

概要

結合性が低くなるように責任を割り当てる

  • 「結合」とは、1つの要素が他の要素に対して、どの程度の強さで接続するか、あるいは依存するかを表す尺度
  • 結合性が高い(密である、強いとも言う)場合
    • 関係するクラスの変更によって変更を強いられる
    • 単独では理解しにくい
    • 再利用しにくい
      • そのクラスを使用するには、そのクラスが依存するクラスも存在しなければならない
  • 設計のあらゆる意思決定において考慮する必要がある
    • 「評価用の原則」と呼ばれる

詳細

  • 好ましくない度合いまで以下の結合を強めすぎることのないようにクラスに責任を割り当てるようにする
    • AがBを属性として持つ
    • AがBのメソッドを呼び出す
    • AがBのインスタンスをローカル変数として保持している
    • AがBのサブクラスである
      • 特に強い結合が伴うため、慎重に検討すること
    • Bがインターフェースであれ、Aがそれを実装している
  • 結合することそのものが問題ではないことを理解する
    • 結合がまったくない状態(またはそれに近い状態)だと設計の品質が低下する
      • 凝集性に乏しく大きなクラスが生成されることになるから