Open4
技術質問対策記事まとめ
継承と委譲
継承のリスク
- 親が変更したときに子も影響を受ける
- 親のpublicメソッドを子が呼び出せることで意図しない使われ方がされる
- 単一責任の原則違反になりやすい
- 親がDB接続に・子がUserRepositoryの場合、親のDBへの接続やクエリの実行の責務を子も持つことになるため
継承の使い時
- 子に親と同じ役割が期待される
- 子 is a 親が成立する
- EV is a Carの場合、親にライトがついたら子にもライトがつく(継承しないと親と子に同じ処理を書く必要がある)
- 子 is a 親が成立する
子が親をツールとして使う場合は委譲を使う
子が親と同じ役割を持つ場合は継承を使う