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

作者: chuneee (chuneee)   2022-01-06 21:09:18
大家好,想向各位前輩請教~
有好幾隻程式分別都要跑三種方法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子類別的各個方法),不知道關鍵差異在哪裡?
還請各位前輩不吝指教~
作者: jej (晃奶大馬桶)   2022-01-06 21:17:00
看不太懂 隱約可以感覺是樣版模式??
作者: ssccg (23)   2022-01-07 11:10:00
這跟抽象類別沒有直接關係,主要是run()定義了A()B()C()這這固定的呼叫流程,是一樓提的樣板模式,如果這個流程是有意義、可重用,那run()就有意義。反之只有這次用例是指定這個流程那就沒必要,放main就好個人比較在意的反而是這個抽象類別,跟各程式是否真的都有is-a關係,ABC會不會用組合的比繼承適合

Links booklink

Contact Us: admin [ a t ] ucptt.com