英文是Liskov Substitution Principle (LSP)
這個原則並不是由Robert.C.Martin 第一次提出的
而是由Barbara Liskov在1988年寫下一段對子型態的定義
他說:
若對型態S的每一個物件o1
都存在一個型態為T的物件o2
使得在所有針對T編寫的程式P中
用o1替換了o2之後
程式P的行為工程不變
則S是T的子型態
看完這段之後,我把書蓋起來深呼吸,才忍住把書丟掉的衝動
事實上里氏替換原則想說的是
將物件A換成另一個物件B
你的程式還能如你所願的跑
就是好棒棒
我們來看看例子
今天柯南的爸爸為了教會柯南開飛機
就給了錢讓柯南去買飛機
柯南看了看覺得有三台飛機他都很喜歡
所以他對爸爸說了
所以柯南現在有三架飛機
它們都繼承至飛機這個類別
今天柯南學會開飛機之後
他想要從夏威夷飛回日本找女朋友角蘭炫耀
結果他開到了紙飛機
於是起飛沒多久
飛機就墜機了
毛利小五郎:我聞到陰謀的味道
雖然紙飛機繼承了飛機在天上飛的函式
但他實際實作的卻是在天空滑翔
紙飛機這個子類別並不能好好的達成父類別想要做到的事
這就是違反里氏替換原則的例子