そもそもリスコフとは?
- バーバラ・リスコフ氏のことで提唱者の名前である
リスコフの置換原則(LSP: Liskov Substitution Principle)
- 派生型はその基本型と置換可能でなければならない
- うーん、なんか難しい・・・
- クラスAのインスタンスがクラスBのインスタンスに依存
- クラスBのインスタンスの代わりにクラスB2を作成
- このとき、クラスAに対してクラスB2を渡してもクラスAは正常に動作しなければならない
- 正常に動作しない場合はリスコフの置換原則に違反している
- リスコフの置換原則を守ることは、OCPを守るために必要なことでもある
経験則と約束事
- 基本クラスから何らかの機能を省いてしまっているような派生クラスはLSPに違反する
- 基本クラス以下のことしかできない派生クラスは、その基本クラスの代わりにはならないからである
まとめ
- リスコフの置換原則はOCPを有効にする主要な役割の一つである
- この原則はあるモジュールに修正を施すことなく拡張する方法を派生型と基本型の置換性という形で表現している