看板 java 關於我們 聯絡資訊
各位先進好 我最近嘗試用java要寫一個專案 但對OO的觀念還不是很好 總是會用到寫C的直覺想法去寫 所以標題下的可能會讓人看不懂,先在此說抱歉 我的問題是這樣的: class Api --------------------------- apiMethod() | |->------ class A------ classAMethod() | |->------ class B ------- classBMethod() 當使用者import class api 使用apiMethod時,會執行到classA中的 classAMethod() 接著會執行到 classB中的 classBMethod 但會遇到一個問題是,classBMethod這個method有部分使用者會需要自己來實做 那我該如何讓使用者能把classBMethod自己override 因為apiMethod跟classAMethod中的流程不會變,所以使用者只需更改classBMethod 我目前想到的作法是,請使用者繼承classB,並把classBMethod override 接著從apiMethod的建構子中把使用者繼承的classB一路傳到classAMethod中 這樣classAMethod再執行classBMethod就會執行到使用者自己override的method 但這樣的方法如果中間又多了一層,我就得一層層傳進去,是否太蠢了@@ 不知道有沒有其他作法可以提供給我参考呢? 謝謝指教 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.80.110.112 ※ 文章網址: https://www.ptt.cc/bbs/java/M.1422525220.A.4E8.html
haha02: 定成抽象方法? 01/29 19:33
stiles: 不蠢. classBMethod 往上跳一層 加上 abstract 關鍵字 01/29 20:44
ssccg: 把要使用者自己實作的部分抽出來成abstract method 01/29 23:41
ssccg: classB改成abstract,另外看不懂你的方法多一層是什麼... 01/29 23:42
ssccg: 你的圖是指class A是apiMethod的參數,還是Api的field? 01/29 23:43
ssccg: 純參數的話一層一層傳進去很正常啊 01/29 23:46
ssccg: 要看合不合理要看你實際class的架構和組成 01/29 23:48
realmeat: http://ppt.cc/BMeF 01/30 12:32
swpoker: listener,callback 01/30 13:33
adrianshum: 看看 Strategy Pattern 02/01 17:26
adrianshum: 不完全是解決你這類的問題,但看過你大概就明白概念了 02/01 17:27