看板 Programming 關於我們 聯絡資訊
※ 引述《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)
sorryChen:謝謝march 學長 128.125.87.33 07/23 14:40