裡氏替換原則

Liskov Substitution Principle (LSP)

Subtypes must be substitutable for their base types.

子類別必須要能替代它的父類別。

Example: 老爸餐廳


目前是以集合關係的角度來理解LSP。

實作上大致有兩個概念:

  • 子類別的Input型態可以比父類別更寬鬆。
  • 子類別的Output型態則需比父類別更為嚴謹。

這樣子類別才有取代父類別的可能。(既有行為正常)


Def. 餐廳:顧客可以用金流換取餐點的地方

舉個實際例子,假設你要繼承老爸的餐廳:

[Input篇]
原本顧客習慣的付款方式是現金
你可以另外提供信用卡來付款。
這樣原本使用現金的顧客,依然能在你的店消費。

[Output篇]
而顧客來到餐廳的目的是餐點
你可以提供漢堡、炸牛排、陽春麵等等。
但必須要是餐點


(Reference.)


ʕ •ᴥ•ʔ:LSP背後就是集合論啊,數學系對這個原則備感親切。