Re: [問題] 想請問interface的具體意義
※ 引述《qrtt1.bbs@bbs.nutn.edu.tw (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: uranus@it.muds.net
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"的狂狷不馴;屬於年少的輕狂色彩 ◎
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 22 之 29 篇):