Re: [問題] 想請問interface的具體意義

看板java作者時間19年前 (2007/01/24 05:32), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串22/29 (看更多)
※ 引述《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"的狂狷不馴;屬於年少的輕狂色彩
文章代碼(AID): #15jdxJ00 (java)
討論串 (同標題文章)
文章代碼(AID): #15jdxJ00 (java)