💭

SOLID原則のL:リスコフの置換原則の原則を噛み砕いて理解する

2023/10/09に公開

はじめに

Clean Architectureを読み進める中で、抽象的でピンと来なかったので自分なりに噛み砕いてみる。

リスコフの置換原則の定義

S型のオブジェクトo1の各々に、対応するT型のオブジェクトo2が1つ存在し、Tを使って定義されたプログラムPに対してo2の代わりにo1を使ってもPの振る舞いが変わらない場合、SはTの派生型であるといえる。

以下の設計はリスコフの置換原則を満たしている。
Billingアプリケーションが使っている2つの派生型に依存していないから。どちらの派生型もLicense型に置き換えることができる。

違反している例

リスコフの置換原則違反のお手本のような例が、蚊の有名な正方形・長方形問題

この例のSquare(正方形)は、Rectangle(長方形)の適切な派生型とは言えない。
なぜなら、Rectangleは幅と高さをそれぞれ独立して変えられるのに対して、Squareは両方を同時に変える必要があるから。

Discussion