リスコフの置換原則(LSP)をしっかり理解する
「サブタイプの振る舞いはこうあるべきだ」という1つの指針
1. スーパータイプメソッドの振る舞い保持
2. スーパータイプのプロパティーの保持
通常継承を使用する事でスーパークラス(A)の持っているメソッドやプロパティーを全て引き継いだサブクラス(B)が生成できます。
この時 B は A の全てを引き継いでいるので、「B は A の一種である」(is-a関係)が成り立つと言えます。
再生プレーヤーの例(Player)
親クラスPlayerはpauseメソッドを呼ぶだけでよかった
Playerを継承したサブクラスではpauseメソッドの前にreservePauseメソッドを必ず呼ばなければならない
これはPlayerクラスのpauseを呼んでいる箇所の変更を余儀なくする(使っている箇所で下位互換でない)
IMO:継承ではなく委譲で実装することになるのでは
PlayerInterface、pauseメソッドがある
pauseの前にreservePauseを呼ぶ必要があるプレーヤーは移譲で実装し、外にはpauseしか見せない案
pauseが呼び出されたら中でまずreservePauseを呼ぶ