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