推 sorryChen:謝謝march 學長 128.125.87.33 07/23 14:40
※ 引述《sorryChen (陳揚和)》之銘言:
: Sorry..各位高手 之前沒有看到大家熱情的回應
: 我之前用繼承是為把code的function 依照功能分層 所以每層都有實做的function
: 之前沒有想好要重複使用的目的 但現在要寫一個類似的class..
: 而且會用到共同定義的functions 其實我覺得這種情形應該還滿普遍
不一定要繼承才可以共用啊.
比如說, 你的 class 應該沒一個從任何地方繼承 strcpy 這個 function,
還是可以 "共用" strcpy 這個 function 的.
繼承可以幫你達成共用的目的, 但共用不是非繼承不可.
: 但我不知道軟工上正確的作法是什麼 把交通工具拿掉也很奇怪阿..
: 所以正確的作法是應該寫個獨立的class叫交通工具
: 然後車和船 有"交通工具"的這個物件 對吧
: 這是是合成還是聚合阿 ? 我很遜阿!!! 不懂strategy pattern..正在研究當中
: 但水陸兩用車直接繼承交通工具 這樣之前寫在車和船的功能就不能重複使用了
: 有多份copy的code不會不好維護嗎
你可以把 "多份 copy" 的情形稍為說明一下 (如何產生多份 copy),
我們再來討論好不好維護.
通常來說是這樣的 (假設現在寫 java)
class Batmobile implements Vehicle{
private Car c;
private Boat b;
};
假設今天 Vehicle 有個 move() method, 那 Batmobile 的 move() 可能是這樣寫的
public void move(){
if(isOnLand())
c.move();
else b.move();
}
這樣是不是 Car 跟 Boat 的 function 都可以使用, 而且也沒有多個 copy 的問題呢?
你 SorryMobile 的實際用途應該遠比這複雜, 建議你把你的需求列出來吧 XD
: ※ 引述《tinlans ( )》之銘言:
: : 他講的水陸兩用車,
: : 讓我覺得分類法應該是以功能做分類,
: : 繼承樹應該建立在「移動方式」的行為上,
: : 各種交通工具只是以合成或聚合的方式去使用這些行為物件,
: : 這樣水陸兩用車就可以直接繼承交通工具 (如果真的有必要留交通工具的話)。
: : 第二行到第四行簡單來說就是 strategy pattern。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 128.54.40.203
※ 編輯: march20 來自: 66.75.255.220 (07/22 11:14)