Re: [問題] 想請問interface的具體意義
※ 引述《qrtt1 (愚人)》之銘言:
: ※ 引述《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. 當然 >"< 我用說的確實比真的在寫時簡單
使用裝飾者的角度來看更顯得怪異
因為Decorator Pattern是動態地將責任加諸於物件上
但是Square似乎沒什麼更多的責任可以加諸在Rectangle上
Square只是一種長和寬相等的Rectangle罷了
提不上是Rectangle的什麼裝飾者
所以我認為用裝飾者的角度來看,只是讓事情更複雜化而已
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.115.213.121
討論串 (同標題文章)