Open1

[継承より委譲]個人的なまとめ

ryotakaryotaka
  • 適材適所で使用する

  • ただし委譲の方が適しているパターンが圧倒的に多い

    • コードを再利用したい時は移譲
    • 親と同じ責務を追わせたい時は継承
  • なんで継承がダメと言われるのか

    • 親クラスと密結合・依存しているから
      • 例1:親クラスの詳細な実装を修正すると子クラスも動作が変わる
      • 例2:継承した後に親クラスで新規にメソッドを定義することによる色々な弊害
  • 継承を使用する場合

    • 本当に継承が適しているのかをしっかり検討する
      • リスコフの置換原則に違反しないか?
        • いわゆるis-aの関係
      • クライアントから子クラスを使用する時に親クラスのpublicメソッドも使用したいのか?
      • 親クラスが継承しても大丈夫なクラスなのか
    • 継承しても問題の無い親クラスを作る
      • 最初から継承前提で作る・作られている
        - 設計・文書化

参考: