2011年1月7日 星期五

The Liskov Substitution Principle

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

子類別在使用上的限制不該是比父類別還要更嚴謹,也就是說父類別可以運作的環境下子類別也可以如魚得水

 

 

 

沒有留言: