---
# System prepended metadata

title: '里氏替代原則(LSP: Liskov Substitution Principle)'
tags: [book, principle, Design Patterns]

---

# 里氏替代原則(LSP: Liskov Substitution Principle)
###### tags: `Design Patterns` `book` `principle`

這個原則指的是「子類別必須能夠替換父類別」。如果按照這個設計原則去實作一個有多層繼承的類別群組，那麼當中的父類別通常是「介面類別」或是「可被繼承的類別」。父類別中一定包含了可被子類別重新實作的方法，而客戶端使用的操作介面也由父類別來定義的。客戶端在使用的過程中，必須不能使用到「物件強制轉型為子類別」的語法，客戶端也不應該知道，目前使用的物件是哪一個子類別實作的。至於使用哪個子類別的物件來替代父類別物件，則是由類別本身的物件產生機制來決定，外界無法得知。里氏替代原則基本上也是對於開放封閉原則提供了一個實作的法則，說明如何設計才能保持正確的需求開放。