天天看點

Liskov替換原則

一、定義

  子類型必須能替換掉它們的基類型

二、提取公共部分的方法代替繼承

  如果一組類都支援一個公共的職責,那麼它們應該從一個公共的超類繼承該職責。 如果公共的超類不存在,那麼就建立一個,并把公共的職責放入其中。畢竟,這樣一個類的有用性是确定無疑的。 然而稍後對系統的擴充也許會假如一個新的子類,該子類很可能會以新的方式來支援同樣的職責。此時,這個新建立的超類可能會會是一個抽象類。

三、結論

  LSP是使OCP成為可能的主要原則之一。正是子類型的可替換性才能使得使用基類型表示的子產品在無需修改的情況下就可以擴充。這種可替換性必須是開發人員可以隐式依賴的。這樣,如果沒有在代碼顯式地支援基類型的契約,那麼就必須要很好地,廣泛地了解這些契約。

繼續閱讀