看板java
标 题Re: [问题] 想请问interface的具体意义
发信站政大狂狷年少 (Wed Jan 24 04:50:42 2007)
转信站ptt!ctu-reader!ctu-gate!news.nctu!newsfeed.nthu!news.cs.nthu!WHSHS
※ 引述《[email protected] (me me)》之铭言:
> 前面所举的雨刷的例子,可以参考策略模式的例子也蛮好的。
> 像 Head First Design Pattern 的鸭子类别。
> (经过书店时去翻翻呗)
我是觉得这本书在举完鸭子类别的例子後,
应该补充一点东西在附录给读者一些提醒,
之所以要在附录是因为它和 pattern 比较无关,
那就是 Liskov Substitution Principle;
因为蛮多 OO 设计者容易陷入程式与现实世界性质对应的迷思,
将 is-almost-a 的关系当成 is-a 的关系来描述,
常听到的一个例子就是,
在数学上正方形是一种矩形,
所以就会有人做出一个 Rectangle 的 base class 出来,
并让 Square 继承它,
但是 Square 的 setWidth() 和 setHeight() 都会同时改变宽和高,
而 Rectangle 的这两个 method 并不会如此,
当 programmer 以多型方式使用 Rectangle 家族的任何 objects 时,
会因此发生 semantic inconsistent 的现象。
这类问题的严重性在於「程式码不是只有一个人在维护」时,
当程式并不是完全由自己所撰写时,
class 家族的 users 并不清楚各 derived classes 的实作细节,
甚至 class 家族的 users 是直接跟 factory 要来 objects 的,
他有可能连自己实际上拿到的是哪个 class 的 instance 都不知道。
--
Name: Tseng, Ling-hua E-mail Address:
[email protected]
School: National Tsing Hua University Department: Computer Science
Interesting: C++, Compiler, PL/PD, OS, VM, Large-scale software design
Researching: Software pipelining for VLIW architectures
Homepage:
https://it.muds.net/~uranus
--
╔═══╗ ┼────────────────────────╮
║狂狷 ║ │
* Origin:[ 狂 狷 年 少 ] whshs.cs.nccu.edu.tw ╰─╮
║ 年少║ ┼╮
< IP:140.119.164.252 > ╰─╮
╚╦═╦╝ ╰
* From:61-230-224-125.dynamic.hinet.net
─╨─╨─ KGBBS ─ ◎ 遨翔"BBS"的狂狷不驯;属於年少的轻狂色彩 ◎