Liskov Substitution Principle(LSP)指出,如果一個對象o1是S的一種類型,並且它可以代替對象o2,而這個對象是一個T類型的對象,並且不違反其所有用戶的原始行爲,那麼S是一個T的子類型。如果違反Liskov替代原則,我該怎麼辦?
用於顯示LSP違例的常見示例是矩形及其派生類型Square。我們的觀點是,雖然直覺上Square看起來是Rectangle的子類型,但是有一些與Rectangle不同的Square的行爲。結論是,Square不能通過LSP來成爲Rectangle的子類型。
我發現的所有解釋在那裏結束,我發現它沒有幫助。我想知道如果我有這個問題該怎麼辦?創建S不是T的子類型,然後呢?我有什麼解決方案來解決它?
有人可以請賜我一個懸而未決的問題的答案嗎?
編輯:我不是在這裏詳細說明這個例子,而是我把這個article轉給你。
'有一些與矩形不同的方形行爲? – deviantfan
這些差異是否與您的情況相關?如果沒有,你仍然可以從矩形派生出正方形。 – Martze
@deviantfan:'mySquare.Length = 5;'也設置寬度爲5,而'myRectangle.Length = 5;'不寬度爲5 – Jonny