日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

装饰模式在Intermec CK1应用程序中通讯模块的应用

發布時間:2023/11/30 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 装饰模式在Intermec CK1应用程序中通讯模块的应用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

??????? 學習設計模式已經已經有一段時間了,一直沒機會再實踐中應用,沒想到第一次成功使用設計模式的思想會是在SD結構的程序中。

??????? 這次分配下來一個比較急的任務,要求在原有通訊模塊的基礎上添加發送頭包的功能,由于對原來程序通訊機制不是很了解,并且時間確實比較緊,因此沒法重寫這部分函數。研究了一下通訊模塊中從文件中建立數據包的部分,發現程序中沒有單獨封包的函數,而是直接根據輸入不同的包編號從文件直接定位該包的位置,讀取256個字節,返回數據包中數據內容。這樣若想添加的新數據包不再文件當中,就必須更改原來的函數才能實現。

??????? 原函數如下:

void xs_get_data_package(LONG i_package_sn,? CHAR** ppc_data,? FILE* pf_upload_data_file)

{

??????? 根據傳輸的i_package_sn不同,從文件 pf_upload_data_file中建立數據包,由ppc_data返回數據包

}

????? 對該函數進行分析,發現實際上我要加入頭包,同時也需要從文件中獲得的數據包,并且頭包對從文件中的得到數據包來說沒有影響。因此考慮是否可以增加一個裝飾函數,在原有函數功能的基礎上增加新的功能我所需要的添加頭包的功能。裝飾適配器函數的原形如下:

void adpter_xs_get_data_package(LONG i_package_sn,? CHAR** ppc_data,? FILE* pf_upload_data_file,CHAR**head_packet)

{??? //head_packet為頭包中的數據

??????????????? if (i_package_sn==0)
??????????????? {
????????????????????? 根據head_packet組裝頭包
????????????????????? return HR_OK;
??????????????? }
??????????????? hr=xs_get_package_from_file(i_package_sn-1,ppc_data, pf_upload_data_file);
??????????????? return hr;

}

計算文件中總包數的函數

??????????????? int xs_get_data_package_count(char *package_sn,char *fp_upload_data_file);

該函數根據文件的不同計算包的總數,由于增加了頭包,因此包總數需要+1,裝飾適配器函數如下:

?????????????? int adpter_xs_get_data_package_count(char *package_sn,char *fp_upload_data_file)

????????????? {

??????????????????????????????? return xs_get_data_package_count(char *package_sn,char *fp_upload_data_file)+1;

????????????? }

本來需要從寫數據包分配和相應的通訊部分函數的問題迎刃而解,算上測試總共花了不到3小時 :)

該程序雖然簡單,但是充分體現出了設計模式中思想的重要性,如果不是第一時間的想到設計模式中模式,很可能需要修改原函數本身,這樣肯定需要先了解原函數中程序的運行機制,增加了時間,并且不知道整個程序中是否還有其他位置調用到了這些函數,因此可能會引入意想不到的錯誤。采用設計模式思想,很輕松的解決了上述問題,高質量的完成了工作。

轉載于:https://www.cnblogs.com/wude/archive/2007/06/29/1941647.html

總結

以上是生活随笔為你收集整理的装饰模式在Intermec CK1应用程序中通讯模块的应用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。