作者H45 (!H45)
看板java
标题Re: [问题] 想请问interface的具体意义
时间Fri Jan 26 02:09:49 2007
※ 引述《qrtt1 (愚人)》之铭言:
: ※ 引述《[email protected] (汀)》之铭言:
: [...]
: : 那就是 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