classを跨いだ共通の実装をどうするか
classを跨ぐ共通の実装をどう扱うか
PHPとか、選択肢多すぎない?
関数
abstract classの継承
classの継承
trait
composition
etc.
抽象化の機能としての筋が悪いから、一つの機能ではコーナーケースに対処できなくなって、別の似たような機能が必要になっているのではないか
何個実装できるかとかもある
interfaceは複数実装できる
継承は、基本的には一つまで
private methodは関数の引数として渡せない
「プログラムにおける抽象」というものを何らかの方向性で分類しているのだろう
その方向性が分かれば、どれを使うべきかが明確になる?
単に「実装の共通化」という雑な軸で比較するせいで、全部同じに見えてしまう
そもそも、その共通実装をわざわざclassで作る意義があるのか?という点
classという中途半端なモノ
基本的に関数で書けばいいやんというのがある
private methodなどもmoduleでいいやんというのがある
これらをわざわざ使わずにclassを使うのは何なのか?
上記で出来なくてclassでできることの一つが状態管理
状態をmodule(?)ないで共有しないならclassを使う必要はない?
仮にOOPの言語だとしても、常に1class 1methodという冗長な実装にするとか
objectに対する操作というのは、まだ意味がわかるが
repositoryとかcontrollerとかserviceとかいうやつがclassになっているのが全く意味がわからない
そもそも状態を持っていない
ほとんどのmethodが公開
一つのmethodを呼び出したいだけなのにclass全体を参照する必要がある
かと思いきや、DIとかがある
DIがclassを前提に(?)設計されてしまっている(?)
他のclasss内にあるmethodを使おうと思うと、DIが必要になり、DIを使うためにはclassで実装する必要があり、というムダな連鎖が起きている?
しらんけど
継承ってそもそも何がしたいんだっけ?
また復習しよう
ポリモーフィズムをやるための一手段という立ち位置だっけ?
正解の使い方をしたときに何がどう嬉しくなるのかを忘れた
interfaceの実装、abstract classの継承、classの継承