モティオの開発備忘録

ITエンジニアとして働いています。

継承より委譲

スーパークラス依存による密結合を避けたい

継承より委譲

委譲とは...コンポジション構造にすること

利用したいクラスをスーパークラスとして継承するのではなく、privateなインスタンス変数として持ち、呼び出す

 

継承を使うとサブクラスがスーパークラスのロジックを使えるようになるため、スーパークラスが共通ロジックの置き場所として利用されがちになる。

継承で無理に共通化すると密結合になるパターンがある。

 

下手に継承を使わず、単一責任原則を重視することが肝要。

値オブジェクトやコンポジション構造で設計できないか検討する。

共通処理としてまとめあげてよいものは

CommonやUtilなどで呼称されるようなクラスで実装される共通処理としてまとめ上げてよいものはどんなものか。

 

横断的関心事

・ログ出力

・エラー検出

デバッグ

・例外処理

・キャッシュ

・同期処理

・分散処理

 

例えば、ECサイトであれば

・注文

・予約

・配送

どういうときにstaticメソッドを使えばいいのか

staticメソッドの正しい使い方

凝縮度に影響がない場合にstaticメソッドを使用する。

例)

ログ出力用メソッド、フォーマット変換用メソッド

ファクトリメソッドとしてstaticメソッドを用いる