Re: [閒聊] 程式大師請進

看板Marginalman作者 (百鬼あやめ的貓)時間4年前 (2021/11/11 18:50), 4年前編輯推噓5(5012)
留言17則, 9人參與, 4年前最新討論串12/38 (看更多)
※ 引述《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去繼承就能直接寫 我只會靜態語言 對ㄚ== -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.32.48.170 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1636627853.A.EF7.html ※ 編輯: yam276 (114.32.48.170 臺灣), 11/11/2021 18:51:20

11/11 18:51, 4年前 , 1F
大師
11/11 18:51, 1F

11/11 18:51, 4年前 , 2F
你花多久時間上色
11/11 18:51, 2F

11/11 18:52, 4年前 , 3F
用程式 不到一秒
11/11 18:52, 3F

11/11 18:52, 4年前 , 4F
我記得邊板有個人貼自動上色工具
11/11 18:52, 4F

11/11 18:52, 4年前 , 5F
適用ptt語法的
11/11 18:52, 5F

11/11 18:53, 4年前 , 6F
幹 大師
11/11 18:53, 6F

11/11 18:54, 4年前 , 7F
感覺跟我想做的事情不一樣捏 還是我對功能的理解錯了
11/11 18:54, 7F

11/11 18:54, 4年前 , 8F
你想做的是啥
11/11 18:54, 8F

11/11 18:54, 4年前 , 9F
原來你是程式大師噢==
11/11 18:54, 9F

11/11 18:55, 4年前 , 10F
呼叫函示的時候自動找A或B的函示去呼叫
11/11 18:55, 10F

11/11 18:55, 4年前 , 11F
class A或class B
11/11 18:55, 11F

11/11 18:55, 4年前 , 12F
好吧 你要處理很多function 那這個東西可能不適用
11/11 18:55, 12F

11/11 18:56, 4年前 , 13F
excute是很可愛的意思嗎
11/11 18:56, 13F

11/11 18:58, 4年前 , 14F
打錯字 隨便啦
11/11 18:58, 14F

11/11 18:58, 4年前 , 15F
Pekomiko可愛
11/11 18:58, 15F

11/11 19:00, 4年前 , 16F
ex-cute
11/11 19:00, 16F

11/11 19:10, 4年前 , 17F
大濕
11/11 19:10, 17F
文章代碼(AID): #1XZFMDxt (Marginalman)
討論串 (同標題文章)
文章代碼(AID): #1XZFMDxt (Marginalman)