💭
SOLID原則のL:リスコフの置換原則の原則を噛み砕いて理解する
はじめに
Clean Architectureを読み進める中で、抽象的でピンと来なかったので自分なりに噛み砕いてみる。
リスコフの置換原則の定義
S型のオブジェクトo1の各々に、対応するT型のオブジェクトo2が1つ存在し、Tを使って定義されたプログラムPに対してo2の代わりにo1を使ってもPの振る舞いが変わらない場合、SはTの派生型であるといえる。
以下の設計はリスコフの置換原則を満たしている。
Billingアプリケーションが使っている2つの派生型に依存していないから。どちらの派生型もLicense型に置き換えることができる。
違反している例
リスコフの置換原則違反のお手本のような例が、蚊の有名な正方形・長方形問題
この例のSquare(正方形)は、Rectangle(長方形)の適切な派生型とは言えない。
なぜなら、Rectangleは幅と高さをそれぞれ独立して変えられるのに対して、Squareは両方を同時に変える必要があるから。
Discussion