[問題] 由外層替換內層的function

看板java作者 (JGC)時間9年前 (2015/01/29 17:53), 編輯推噓3(308)
留言11則, 6人參與, 最新討論串1/1
各位先進好 我最近嘗試用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

01/29 19:33, , 1F
定成抽象方法?
01/29 19:33, 1F

01/29 20:44, , 2F
不蠢. classBMethod 往上跳一層 加上 abstract 關鍵字
01/29 20:44, 2F

01/29 23:41, , 3F
把要使用者自己實作的部分抽出來成abstract method
01/29 23:41, 3F

01/29 23:42, , 4F
classB改成abstract,另外看不懂你的方法多一層是什麼...
01/29 23:42, 4F

01/29 23:43, , 5F
你的圖是指class A是apiMethod的參數,還是Api的field?
01/29 23:43, 5F

01/29 23:46, , 6F
純參數的話一層一層傳進去很正常啊
01/29 23:46, 6F

01/29 23:48, , 7F
要看合不合理要看你實際class的架構和組成
01/29 23:48, 7F

01/30 12:32, , 8F
01/30 12:32, 8F

01/30 13:33, , 9F
listener,callback
01/30 13:33, 9F

02/01 17:26, , 10F
看看 Strategy Pattern
02/01 17:26, 10F

02/01 17:27, , 11F
不完全是解決你這類的問題,但看過你大概就明白概念了
02/01 17:27, 11F
文章代碼(AID): #1KoWCaJe (java)