転送
Forwarding
一般的な委譲のこと
ググるときは「委譲」で出てくるやつ
一般的な委譲は「転送」の誤用らしいが、一般的になってしまった
GoFのDelegation
クラスベースのOOPの委譲のことかなmrsekut.icon
転送と継承の違い
継承は子が親の能力を獲得する
が、委譲は親をツールとして所有するだけ
子に新しい能力が備わるわけではない
使い分け
単一責任の原則(変更する理由はたった1つ原則) (SRP)なども意識して
あるクラスAが単に他のクラスのmethodを使いたい場合は、委譲をする
ここで継承をしてしまうと、Aの責務が親のものも持ち合わせることになる
つまり、変な使い方をすると、子が無駄に複数の責務を持つことになる
本当に親と同じ責務を持つべきなら継承する
#??
これって、「親と子の関係」じゃなくね?
継承は明らかに親子関係があるが、
委譲って親子関係と考えると混乱するくない?
上下関係のない友人からmethod借りてくるみたいな感覚ではないのか?
DIとかCompositionでやってることと同じ #??
参考
https://ja.wikipedia.org/wiki/委譲
継承と委譲の使い分けと、インターフェースの重要性について
具体例を用いた継承と委譲の比較
https://en.wikipedia.org/wiki/Forwarding_(object-oriented_programming)
ガチのやつ
プログラマーを惑わせる3種類の委譲(委譲・Delegation/転送・Forwarding/.NET Delegates) - Qiita
https://qiita.com/hirokidaichi/items/591ad96ab12938878fe1#委譲
https://ikenox.info/blog/inheritance-and-delegation-and-interface/