Re: [闲聊] 程式大师请进

楼主: yam276 ('_')   2021-11-11 18:50:51
※ 引述《ZooseWu (动物园)》之铭言:
: 我有两个class A 与 B
: 他们有80%的功能与函示名称相似
: 然后我只有runtime的时候才知道物件身上有哪一个class
: 我有一个好方法可以简单的呼叫 (A|B).function吗
: 对了class不是我写的
: 所以我没办法透过写interface然后让AB继承这种方法
碰到奇怪的东西我偶尔会这样做:
基底类别:
01. class ISubject
02. {
03. protected:
04. virtual bool Prepare(Input* input) = 0;
05. virtual bool Excute(Input* input) = 0;
06. virtual bool Finish(Input* input) = 0;
07.
08. public:
09. virtual bool Do(Input* input) = 0;
10. };
共通线:
01. class SubjectBase : public ISubject
02. {
03. protected:
04. virtual bool Prepare(Input* input) override
05. {
06. // 做点初始化跟共通会做的事情
07. }
08.
09. virtual bool Excute(Input* input) override
10. {
11. // 留白
12. }
13.
14. virtual bool Finish(Input* input) override
15. {
16. // 做点收尾跟释放资源的事情
17. }
18.
19. public:
20. virtual bool Do(Input* input)
21. {
22. if(!Prepare(input))
23. {
24. // 初始化出错,输出错误
25. return false;
26. }
27.
28. if(!Excute(input))
29. {
30. // 执行阶段出错,输出错误
31. return false;
32. }
33.
34. if(!Finish(input))
35. {
36. // 释放资源阶段出错,输出错误
37. return false;
38. }
39.
40. return true;
41. }
42. };
个人线:
1. class SubjectA : SubjectBase
2. {
3. protected:
4. virtual bool Excute(Input* input) override
5. {
6. // 做点SubjectA会做的事
7. }
8. };
以此类推
最后看你要用map还是啥弄一个分支
执行靠呼叫Do(input);
缺点是写起来很麻烦
对只有几个的有点过去包装
优点是写完后很懒人
尤其是当你要处理几十几百个上古遗物的时候
只要开一个小class去继承就能直接写
我只会静态语言 对ㄚ==
作者: wwndbk (黑人问号)   2021-11-11 18:51:00
大师
作者: TsushimaRiko (津岛梨子)   2021-11-11 18:51:00
你花多久时间上色
楼主: yam276 ('_')   2021-11-11 18:52:00
用程式 不到一秒
作者: emptie ([ ])   2021-11-11 18:52:00
我记得边板有个人贴自动上色工具适用ptt语法的
作者: TsushimaRiko (津岛梨子)   2021-11-11 18:53:00
干 大师
作者: ZooseWu (N5)   2021-11-11 18:54:00
感觉跟我想做的事情不一样捏 还是我对功能的理解错了
楼主: yam276 ('_')   2021-11-11 18:54:00
你想做的是啥
作者: weichipedia (阿克西斯教小埋★骑士)   2021-11-11 18:54:00
原来你是程式大师噢==
作者: ZooseWu (N5)   2021-11-11 18:55:00
呼叫函示的时候自动找A或B的函示去呼叫class A或class B
楼主: yam276 ('_')   2021-11-11 18:55:00
好吧 你要处理很多function 那这个东西可能不适用
作者: SuicidePeko (string int = true;)   2021-11-11 18:56:00
excute是很可爱的意思吗
楼主: yam276 ('_')   2021-11-11 18:58:00
打错字 随便啦Pekomiko可爱
作者: lopp54321010 (嘻嘻010)   2021-11-11 19:00:00
ex-cute
作者: kerycheng (kk)   2021-11-11 19:10:00
大湿

Links booklink

Contact Us: admin [ a t ] ucptt.com