看板 java 關於我們 聯絡資訊
大家好,想向各位前輩請教~ 有好幾隻程式分別都要跑三種方法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
jej: 看不太懂 隱約可以感覺是樣版模式??01/06 21:17
確實是被告知移到main裡面是因為有設計模式是這樣,只是不太理解寫在抽象類別中和在 main方法的優缺差異,感謝大大提供關鍵字 ※ 編輯: chuneee (106.1.233.10 臺灣), 01/06/2022 21:38:54
ssccg: 這跟抽象類別沒有直接關係,主要是run()定義了A()B()C()這01/07 11:10
ssccg: 這固定的呼叫流程,是一樓提的樣板模式,如果這個流程是有01/07 11:12
ssccg: 意義、可重用,那run()就有意義。反之只有這次用例是指定這01/07 11:13
ssccg: 個流程那就沒必要,放main就好01/07 11:13
ssccg: 個人比較在意的反而是這個抽象類別,跟各程式是否真的都有01/07 11:15
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