免费爱碰视频在线观看,九九精品国产屋,欧美亚洲尤物久久精品,1024在线观看视频亚洲

      設(shè)計(jì)模式 命令 設(shè)計(jì)模式之命令模式

      介紹:

      命令模式是一種行為模式,它是將具體的請(qǐng)求過(guò)程與執(zhí)行過(guò)程分開(kāi),使代碼解耦,便于維護(hù);

      假設(shè)我們現(xiàn)在要設(shè)計(jì)一個(gè)命令解析的模塊:

      傳統(tǒng)方式:

      void func1(void){ printf("func1rn");}void func2(void){ printf("func2rn");}void func3(void){ printf("func3rn");}void prase_cmd(char cmd){ switch(cmd) { case 0x01: func1(); break; case 0x02: func2(); break; case 0x03: func3(); break; default: printf("cmd in invalidrn"); break; }}

      傳統(tǒng)方式是使用switch-case對(duì)命令進(jìn)行一一解析的,將請(qǐng)求過(guò)程與執(zhí)行過(guò)程耦合在一起,這樣的方式隨著命令的增加,prase_cmd中的代碼量會(huì)變得越來(lái)越多,也會(huì)越來(lái)越臃腫;使用命令模式就可以很好的避免傳統(tǒng)模式帶來(lái)的問(wèn)題:

      void func1(void){ printf("func1rn");}void func2(void){ printf("func2rn");}void func3(void){ printf("func3rn");}typedef void (*cmd_func) (void);typedef struct{ int cmd; cmd_func func;}cmd_t;static cmd_t cmd_table[] ={ {0x01, func1}, {0x02, func2}, {0x03, func3},};void prase_cmd(int cmd){ for(int index = 0; index < sizeof(cmd_table) / sizeof(cmd_t); index++) { if(cmd_table[index].cmd == cmd) { cmd_table[index].func(); return; } }}

      通過(guò)命令模式,我們可以很好的進(jìn)行代碼的維護(hù)與拓展,我們只需要對(duì)cmd_table進(jìn)行維護(hù)即可,無(wú)需再關(guān)注prase_cmd里的內(nèi)容,實(shí)現(xiàn)了代碼的解耦;

      鄭重聲明:本文內(nèi)容及圖片均整理自互聯(lián)網(wǎng),不代表本站立場(chǎng),版權(quán)歸原作者所有,如有侵權(quán)請(qǐng)聯(lián)系管理員(admin#wlmqw.com)刪除。
      用戶(hù)投稿
      上一篇 2022年6月28日 16:33
      下一篇 2022年6月28日 16:39

      相關(guān)推薦

      聯(lián)系我們

      聯(lián)系郵箱:admin#wlmqw.com
      工作時(shí)間:周一至周五,10:30-18:30,節(jié)假日休息