[問題] 繼承抽象類別的使用觀念請益

看板java作者 (chuneee)時間2年前 (2022/01/06 21:09), 2年前編輯推噓0(007)
留言7則, 2人參與, 2年前最新討論串1/1
大家好,想向各位前輩請教~ 有好幾隻程式分別都要跑三種方法A B C 其中AC是完全一樣的內容,只需照不同的類別卡不同參數內容,而B則是各個程式都完全 不同 因此我寫了一個抽象類別 內容包括 方法run() 用來呼叫A B C, 方法A(), 方法C() 和抽象方法B() 需要跑這些流程的這些程式就繼承這個抽象類別 並實作B() 另外有一個manager會包含main方法 負責new出這些類別並call run() 我的疑問是 1. 這樣的安排否妥當? 2. 如果把run() 移到main裡,是否有直接的優缺點? 我的想法是,因為run()裡的流程是好幾隻程式都相同的,因此把它放在抽象類別裡 但放在main裡好像也可以(再個別call子類別的各個方法),不知道關鍵差異在哪裡? 還請各位前輩不吝指教~ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 106.1.233.10 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/java/M.1641474560.A.027.html

01/06 21:17, 2年前 , 1F
看不太懂 隱約可以感覺是樣版模式??
01/06 21:17, 1F
確實是被告知移到main裡面是因為有設計模式是這樣,只是不太理解寫在抽象類別中和在 main方法的優缺差異,感謝大大提供關鍵字 ※ 編輯: chuneee (106.1.233.10 臺灣), 01/06/2022 21:38:54

01/07 11:10, 2年前 , 2F
這跟抽象類別沒有直接關係,主要是run()定義了A()B()C()這
01/07 11:10, 2F

01/07 11:12, 2年前 , 3F
這固定的呼叫流程,是一樓提的樣板模式,如果這個流程是有
01/07 11:12, 3F

01/07 11:13, 2年前 , 4F
意義、可重用,那run()就有意義。反之只有這次用例是指定這
01/07 11:13, 4F

01/07 11:13, 2年前 , 5F
個流程那就沒必要,放main就好
01/07 11:13, 5F

01/07 11:15, 2年前 , 6F
個人比較在意的反而是這個抽象類別,跟各程式是否真的都有
01/07 11:15, 6F

01/07 11:18, 2年前 , 7F
is-a關係,ABC會不會用組合的比繼承適合
01/07 11:18, 7F
感謝S大針對兩個問題都提供方向~ run()的內容的確是個支程式固定且會需要一直重複執行的,這樣放在抽象類別中應該沒 有問題 另外其實為了易於表達問題上面敘述有簡化,實際上流程A到C之間還有很多必做的方法需 要各自實作,我想應該符合is-a的關係 ※ 編輯: chuneee (42.72.84.249 臺灣), 01/08/2022 15:51:13
文章代碼(AID): #1Xrke00d (java)