Open4

技術質問対策記事まとめ

seiya2130seiya2130

継承と委譲

継承のリスク

  • 親が変更したときに子も影響を受ける
  • 親のpublicメソッドを子が呼び出せることで意図しない使われ方がされる
  • 単一責任の原則違反になりやすい
    • 親がDB接続に・子がUserRepositoryの場合、親のDBへの接続やクエリの実行の責務を子も持つことになるため

継承の使い時

  • 子に親と同じ役割が期待される
    • 子 is a 親が成立する
      • EV is a Carの場合、親にライトがついたら子にもライトがつく(継承しないと親と子に同じ処理を書く必要がある)

子が親をツールとして使う場合は委譲を使う
子が親と同じ役割を持つ場合は継承を使う

https://ikenox.info/blog/inheritance-and-delegation-and-interface/