我能夠得到LSP及其違規的總體思路。比如說,擴展一個具有setWidth()和setHeight()函數的矩形的方形是對LSP的細微的違反,因爲有一個額外的要求。同樣,一個GreenDuck用一個函數(Grass g)擴展一個Duck類不能有一個額外的子句,要求草是綠色的。Liskov替代原理
對於正方形和長方形的場景,我認爲用自己的方式來實現多邊形接口和矩形以及實現多邊形的方形是正確的。 對於GreenDuck場景,GreenDuck使用組合將Duck作爲其領域之一可能是一個好主意。 Q1)我對上述兩種情況的理解是正確的嗎? Q2)另外,我無法模擬LSP將允許「擴展」的場景,這引起了我的疑問。有人可以深入研究LSP並提供具體的例子,如果延伸是合適的和獎金,如果它是組成不會那麼好。
編輯:爲清楚起見
我想我的編輯將闡明我對多邊形的理解以及實現繼承的正確方法。至於鴨子的例子,有時候聽起來很奇怪的英語可能是正確的。如果我將Duck重新標記爲AbstractDuckBehaviour,該怎麼辦?你會因爲重新命名而樂意使用作文嗎? – 2014-10-29 20:48:11