作者chuneee (chuneee)
看板java
標題[問題] 繼承抽象類別的使用觀念請益
時間Thu Jan 6 21:09:18 2022
大家好,想向各位前輩請教~
有好幾隻程式分別都要跑三種方法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://webptt.com/m.aspx?n=bbs/java/M.1641474560.A.027.html
1F:→ jej: 看不太懂 隱約可以感覺是樣版模式??01/06 21:17
確實是被告知移到main裡面是因為有設計模式是這樣,只是不太理解寫在抽象類別中和在
main方法的優缺差異,感謝大大提供關鍵字
※ 編輯: chuneee (106.1.233.10 臺灣), 01/06/2022 21:38:54
2F:→ ssccg: 這跟抽象類別沒有直接關係,主要是run()定義了A()B()C()這01/07 11:10
3F:→ ssccg: 這固定的呼叫流程,是一樓提的樣板模式,如果這個流程是有01/07 11:12
4F:→ ssccg: 意義、可重用,那run()就有意義。反之只有這次用例是指定這01/07 11:13
5F:→ ssccg: 個流程那就沒必要,放main就好01/07 11:13
6F:→ ssccg: 個人比較在意的反而是這個抽象類別,跟各程式是否真的都有01/07 11:15
7F:→ ssccg: is-a關係,ABC會不會用組合的比繼承適合01/07 11:18
感謝S大針對兩個問題都提供方向~
run()的內容的確是個支程式固定且會需要一直重複執行的,這樣放在抽象類別中應該沒
有問題
另外其實為了易於表達問題上面敘述有簡化,實際上流程A到C之間還有很多必做的方法需
要各自實作,我想應該符合is-a的關係
※ 編輯: chuneee (42.72.84.249 臺灣), 01/08/2022 15:51:13