作者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/cn.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