Liskov Substitution Principle (LSP)
Subtypes must be substitutable for their base types.
子類別必須要能替代它的父類別。
Example: 老爸餐廳
目前是以集合關係的角度來理解 LSP。
實作上大致有兩個概念:
- 子類別的Input型態可以比父類別更寬鬆。
- 子類別的Output型態則需比父類別更為嚴謹。
這樣子類別才有取代父類別的可能。(既有行為正常)
Def. 餐廳:顧客可以用金流換取餐點的地方。
舉個實際例子,假設你要繼承老爸的餐廳:
[Input篇]
原本顧客習慣的付款方式是現金,
你可以另外提供信用卡來付款。
這樣原本使用現金的顧客,依然能在你的店消費。
[Output篇]
而顧客來到餐廳的目的是餐點,
你可以提供漢堡、炸牛排、陽春麵等等。
但必須要是餐點。
(Reference.)
ʕ •ᴥ•ʔ:LSP背後就是集合論啊,數學系對這個原則備感親切。