Re: [問題] 想請問interface的具體意義
※ 引述《tinlans.bbs@whshs.cs.nccu.edu.tw (汀)》之銘言:
[...]
: 那就是 Liskov Substitution Principle;
: 因為蠻多 OO 設計者容易陷入程式與現實世界性質對應的迷思,
: 將 is-almost-a 的關係當成 is-a 的關係來描述,
: 常聽到的一個例子就是,
: 在數學上正方形是一種矩形,
: 所以就會有人做出一個 Rectangle 的 base class 出來,
: 並讓 Square 繼承它,
: 但是 Square 的 setWidth() 和 setHeight() 都會同時改變寬和高,
: 而 Rectangle 的這兩個 method 並不會如此,
: 當 programmer 以多型方式使用 Rectangle 家族的任何 objects 時,
: 會因此發生 semantic inconsistent 的現象。
: 這類問題的嚴重性在於「程式碼不是只有一個人在維護」時,
[...]
感謝分享啊,原來這總現象的 keywords 是
semantic inconsistent
Liskov Substitution Principle
(知識與 keyword 是可遇不可求的 XD)
不過既然 Square 是 Rectangle 的 special case
這樣的關係應該以裝飾者的角度來看待嚕
正確地覆寫父類別並能通過 w/h 相等的 unit test
PS. 當然 >"< 我用說的確實比真的在寫時簡單
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 210.59.94.117
討論串 (同標題文章)