亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

一種基于工廠類實現(xiàn)報文解析的方法

文檔序號:9914476閱讀:512來源:國知局
一種基于工廠類實現(xiàn)報文解析的方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及通訊技術(shù)領(lǐng)域,尤其涉及一種基于工廠類實現(xiàn)報文解析的方法。
【背景技術(shù)】
[0002] 當對象(協(xié)議)比較少時,在項目中需要的地方直接通過new來創(chuàng)建對象,這是可以 的,而且比較簡單;但是隨著項目的發(fā)展,需要接入的對象(協(xié)議)越來越多,還是在項目中 需要的地方直接通過new來創(chuàng)建對象,到時如果創(chuàng)建方法改變等情況出現(xiàn),則需要四處修改 代碼,維護量、維護難度增加,容易產(chǎn)生各種問題。

【發(fā)明內(nèi)容】

[0003] 本發(fā)明要解決的技術(shù)問題,在于提供一種基于工廠類實現(xiàn)報文解析的方法,給項 目的系統(tǒng)帶來更大的可擴展性和盡量少的修改量,提高了工作效率。
[0004] 本發(fā)明是這樣實現(xiàn)的:一種基于工廠類實現(xiàn)報文解析的方法,所述方法利用loki 庫中的單體模式來實現(xiàn)一工廠類,所述工廠類包括:協(xié)議解析工廠類CarCmdFactory、自動 生成協(xié)議解析類CCarCmdParserOb j以及協(xié)議解析基類CCarCmdParser;
[0005] 所述協(xié)議解析工廠類CarCmdFactory根據(jù)終端協(xié)議名稱動態(tài)創(chuàng)建對應(yīng)的協(xié)議解析 對象;所述自動生成協(xié)議解析類CCarCmdParserOb j通過向協(xié)議解析工廠類CarCmdFactory 指定協(xié)議名來創(chuàng)建對應(yīng)的協(xié)議解析對象,并返回對象接口指針;且還負責協(xié)議解析對象的 內(nèi)存釋放;所述協(xié)議解析基類CCarCmdParser提供各種公共接口;調(diào)用者無需調(diào)用具體的協(xié) 議解析類,只要調(diào)用該協(xié)議解析基類即可;
[0006] 所述工廠類在項目中維護一個唯一實例,將各協(xié)議解析類注冊到該實例當中,在 有報文待解析時,所述工廠類根據(jù)協(xié)議名從所述實例中獲取對應(yīng)協(xié)議解析類進行解析。
[0007] 進一步的,所述方法具體進一步為:在處理下行命令跟解析上行報文之前,先增加 一個具體協(xié)議解析類;
[0008]該具體協(xié)議解析類需繼承于所述協(xié)議解析基類CCarCmdParser,其中各具體協(xié)議 解析類都要繼承該類;
[0009] 協(xié)議解析基類CCarCmdParser的功能是提供各種公共接口,該公共接口包括:上行 報文解析接口 Parser ()和下行命令解析接口 SetPosReport ();調(diào)用者在調(diào)用各接口時,無 需調(diào)用具體的協(xié)議解析類,只要調(diào)用該協(xié)議解析基類CCarCmdParser即可;
[0010] 協(xié)議解析類實現(xiàn)完,再通過相應(yīng)的注冊接口把該解析類注冊到協(xié)議解析工廠類 CarCmdFactory 中;
[0011]工廠類在項目中維護一個唯一實例,將各協(xié)議解析類注冊到該實例當中,在有報 文待解析時,所述工廠類根據(jù)協(xié)議名從所述實例中獲取對應(yīng)協(xié)議解析類進行解析。
[0012]進一步的,所述通過相應(yīng)的注冊接口把該解析類注冊到協(xié)議解析工廠類 CarCmdFactory中的注冊方式為:所述協(xié)議解析工廠類CarCmdFactory的主要功能是提供兩 個接口:一、是把各協(xié)議解析類的信息注冊到一個map表里面;該信息包括:協(xié)議名稱和創(chuàng)建 具體協(xié)議解析對象接口;二、是創(chuàng)建協(xié)議解析對象,即利用協(xié)議名稱從map表獲取對應(yīng)的創(chuàng) 建具體協(xié)議解析對象接口,并通過該接口創(chuàng)建協(xié)議解析對象。
[0013] 進一步的,所述處理下行命令的流程具體為:
[0014] 項目中程序收到定位查詢命令后,在命令管理器中定義自動生成協(xié)議解析類 CCarCmdParserObj的局部對象;自動生成協(xié)議解析類CarCmdParserObj利用構(gòu)造函數(shù),通過 協(xié)議類型名從協(xié)議解析工廠類CarCmdFactory中的map表獲取接口創(chuàng)建對應(yīng)的協(xié)議解析類; [00 15]自動生成協(xié)議解析類CCarCmdParserObj主要提供三個功能,一是利用構(gòu)造函數(shù)跟 傳進來的協(xié)議名稱參數(shù),通過向協(xié)議解析工廠類CarCmdFactory指定協(xié)議名來創(chuàng)建對應(yīng)的 協(xié)議解析對象,二是返回指向各協(xié)議解析對象的指針,返回值類型是CCarCmdParser,三是 通過析構(gòu)函數(shù)來釋放協(xié)議解析對象的內(nèi)存;
[0016] 命令管理器通過自動生成協(xié)議解析類CCarCmdParserObj對象取得指向協(xié)議解析 類接口的指針,并利用該指針調(diào)用對應(yīng)的接口進行解析命令;命令管理器中通過調(diào)用接口 SetPOSReport,根據(jù)協(xié)議進行組包,并把組完的包設(shè)置到協(xié)議解析類的命令緩沖區(qū);
[0017] 最后,命令管理器從協(xié)議解析類的緩沖區(qū)獲取數(shù)據(jù)進行做進一步的處理,并利用 CCarCmdParserObj析構(gòu)函數(shù)來釋放分配給協(xié)議解析對象的內(nèi)存。
[0018] 進一步的,所述解析上行報文的具體流程為:
[0019]項目的程序收到上行報文后,在項目的上行數(shù)據(jù)處理器中定義自動生成協(xié)議解析 類CCarCmdParserObj的局部對象;自動生成協(xié)議解析類CarCmdParserObj利用構(gòu)造函數(shù),通 過協(xié)議類型名從協(xié)議解析工廠類CarCmdFactory中的map表獲取接口創(chuàng)建對應(yīng)的協(xié)議解析 類;
[0020] 上行數(shù)據(jù)處理器通過自動生成協(xié)議解析類CCarCmdParserObj對象取得指向協(xié)議 解析類接口的指針,并利用該指針調(diào)用對應(yīng)的接口進行解析報文;
[0021 ]最后,利用自動生成協(xié)議解析類CCarCmdParserObj析構(gòu)函數(shù)來釋放分配給協(xié)議解 析對象的內(nèi)存。
[0022]本發(fā)明具有如下優(yōu)點:本發(fā)明給系統(tǒng)帶來更大的可擴展性和盡量少的修改量,當 增加一個協(xié)議時,只要定義好該協(xié)議解析類,并把該協(xié)議類名稱和創(chuàng)建接口注冊到協(xié)議解 析工廠類,在使用的地方只要傳協(xié)議名稱就可以創(chuàng)建對應(yīng)的協(xié)議解析對象,而不要判斷具 體協(xié)議類型;當需要修改協(xié)議對象創(chuàng)建方法時,只要修改協(xié)議對象創(chuàng)建接口的定義即可。
【附圖說明】
[0023]圖1為本發(fā)明方法整體工作原理圖。
[0024]圖2為本發(fā)明下行命令處理流程示意圖。
[0025] 圖3為本發(fā)明解析上行報文的具體流程示意圖。
【具體實施方式】
[0026] 請參閱圖1所示,本發(fā)明的一種基于工廠類實現(xiàn)報文解析的方法,所述方法利用 loki庫中的單體模式來實現(xiàn)一工廠類,所述工廠類包括:協(xié)議解析工廠類CarCmdFactory、 自動生成協(xié)議解析類CCarCmdParserObj以及協(xié)議解析基類CCarCmdParser;
[0027] 所述協(xié)議解析工廠類CarCmdFactory根據(jù)終端協(xié)議名稱動態(tài)創(chuàng)建對應(yīng)的協(xié)議解析 對象;所述自動生成協(xié)議解析類CCarCmdParserOb j通過向協(xié)議解析工廠類CarCmdFactory 指定協(xié)議名來創(chuàng)建對應(yīng)的協(xié)議解析對象,并返回對象接口指針;且還負責協(xié)議解析對象的 內(nèi)存釋放;所述協(xié)議解析基類CCarCmdParser提供各種公共接口;調(diào)用者無需調(diào)用具體的協(xié) 議解析類,只要調(diào)用該協(xié)議解析基類即可;
[0028] 所述工廠類在項目中維護一個唯一實例,將各協(xié)議解析類注冊到該實例當中,在 有報文待解析時,所述工廠類根據(jù)協(xié)議名從所述實例中獲取對應(yīng)協(xié)議解析類進行解析。
[0029] 所述方法具體進一步為:在處理下行命令跟解析上行報文之前,先增加一個具體 協(xié)議解析類;該具體協(xié)議解析類如:CSampleParser協(xié)議解析類,其定義如下:
[0032]該具體協(xié)議解析類需繼承于所述協(xié)議解析基類CCarCmdParser,其中各具體協(xié)議 解析類都要繼承該類;
[0033]協(xié)議解析基類CCarCmdParser的功能是提供各種公共接口,該公共接口包括:上行 報文解析接口 Parser ()和下行命令解析接口 SetPosReport ();調(diào)用者在調(diào)用各接口時,無 需調(diào)用具體的協(xié)議解析類,只要調(diào)用該協(xié)議解析基類CCarCmdParser即可;
[0034]協(xié)議解析類實現(xiàn)完,再通過相應(yīng)的注冊接口把該解析類注冊到協(xié)議解析工廠類 CarCmdFactory 中;
[0035] 所述通過相應(yīng)的注冊接口把該解析類注冊到協(xié)議解析工廠類CarCmdFactory中的 注冊方式為:
[0036] CarCmdFactory::Instance()·Register("SampleParser",CSampleParser:: Create);其中" SampleParser"是協(xié)議名稱,CSampleParser: :Create是創(chuàng)建協(xié)議解析對象 接口。
[0037]所述協(xié)議解析工廠類CarCmdFactory的主要功能是提供兩個接口:一、是把各協(xié)議 解析類的信息注冊到一個map表里面;該信息包括:協(xié)議名稱和創(chuàng)建具體協(xié)議解析對象接 口;二、是創(chuàng)建協(xié)議解析對象,即利用協(xié)議名稱從map表獲取對應(yīng)的創(chuàng)建具體協(xié)議解析對象 接口,并通過該接口創(chuàng)建協(xié)議解析對象。如:
[0038] CarCmdFactory從SingletonHolder實例化得到的類,其定義如下:
[0041] 工廠類在項目中維護一個唯一實例,將各協(xié)議解析類注冊到該實例當中,在有報 文待解析時,所述工廠類根據(jù)協(xié)議名從所述實例中獲取對應(yīng)協(xié)議解析類進行解析。
[0042] 在本發(fā)明中,所述處理下行命令的流程具體為:
[0043]項目中程序收到命令后,在命令管理器中定義自動生成協(xié)議解析類 CCarCmdParserObj的局部對象;自動生成協(xié)議解析類CarCmdParserObj利用構(gòu)造函數(shù),通過 協(xié)議類型名從協(xié)議解析工廠類CarCmdFactory中的map表獲取接口創(chuàng)建對應(yīng)的協(xié)議解析類; [00 44]自動生成協(xié)議解析類CCarC
當前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1