作者tinlans ( )
看板Programming
標題Re: 繼承和多重繼承
時間Thu Jul 16 19:53:25 2009
※ 引述《march20 ()》之銘言:
: ※ 引述《tinlans ( )》之銘言:
: : 其實我比較好奇的是,
: : 「交通工具」這種分類有什麼共通特性和介面值得你把它抽出來?
: : 要不要考慮拿掉這個 class?
: 我猜在他在"交通工具" 實作了某些 utility.
: 如果是這樣, 應該是把 "交通工具" 變成 pure interface,
: 然後把這些 utility function 提取到 TrafficUtil, MillageUtil 才對..
他講的水陸兩用車,
讓我覺得分類法應該是以功能做分類,
繼承樹應該建立在「移動方式」的行為上,
各種交通工具只是以合成或聚合的方式去使用這些行為物件,
這樣水陸兩用車就可以直接繼承交通工具 (如果真的有必要留交通工具的話)。
第二行到第四行簡單來說就是 strategy pattern。
--
Ling-hua Tseng (
[email protected])
Department of Computer Science, National Tsing-Hua University
Interesting: C++, Compiler, PL/PD, OS, VM, Large-scale software design
Researching: Software pipelining for VLIW architectures
Homepage:
https://www.tinlans.org
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.160.105.128
1F:推 march20:strategy 的型是在, 但交通工具似乎不太 66.75.255.220 07/17 00:18
2F:推 march20:需要 "可抽換" (除非是變型金鋼或是 66.75.255.220 07/17 00:20
3F:推 march20:在 model 路線中的交通工具選擇), 不然頂 66.75.255.220 07/17 00:20
4F:推 march20:多就是個 composite 吧 (就你舉的 case) 66.75.255.220 07/17 00:21
5F:推 march20:("頂多" 不太對, 應該說 "只需要") 66.75.255.220 07/17 00:24
6F:→ tinlans:strategy 除了強調可抽換外還有歸納行為成118.160.105.128 07/17 15:36
7F:→ tinlans:一族系的用途,不抽只是不用部分特性罷了118.160.105.128 07/17 15:37
8F:→ tinlans:,而且要做成可抽也是有理由,因為不可能118.160.105.128 07/17 15:38
9F:→ tinlans:同時在水上又在陸上,可以根據環境抽。118.160.105.128 07/17 15:38
10F:→ tinlans:而且做成 aggregate 也不算過度預留彈性。118.160.105.128 07/17 15:40
11F:推 march20:話說, 其實原 po 一直都沒說他這幾個class 66.75.255.220 07/17 17:14
12F:推 march20:是拿來做什麼的, 我個倒是猜得很開心 XD 66.75.255.220 07/17 17:14
13F:→ godfat:就熱情ㄟ XD 220.135.28.18 07/17 17:26