Functions That Use References To Base(Super) Classes Must BeAble To Use Objects Of Derived(Sub) Classes Without Knowing It
我個人很喜歡幫人取外號或alias name...像是這個利斯可夫A_A
Liskov說穿了就是想要表達多型(polymorphism)的好處,宗旨是描述在程式開發過程中,
對於所使用到的物件,都必須是可以很容易的被替換成其子類別 或者是實做該介面的物件
若不能達成這樣的理想,那很有可能每當有一次的需求變動時,就要去改變多個子類別或者多個實做的類別,
這樣就有點違背OCP的概念了..就拿正方形與長方型的例子來說好了,若以正方形繼承長方形的角度來看,
如果要計算長寬總和、面積之類的,那就得改變計算方法(畢竟正方形只需要一個長度,不需要兩個= = ),
所以也就因此而需要去override相關的function,嘿嘿 這邊可以回憶一下,使用繼承的時機到底對嗎?( 不該去override superclass function)
.......
根據這樣的狀況我們可以知道,LSP就是為了要描述一個 IS-A的概念
The Liskov Substitution Principle (LSP) makes it clear that theISA relationship is all about behavior
子類別在使用上的限制不該是比父類別還要更嚴謹,也就是說父類別可以運作的環境下子類別也可以如魚得水
沒有留言:
張貼留言