91视频下载I色噜噜av中文无码I91高清免费看I日韩在线99I玖色网I久久精品66I精品99又大又爽又硬少妇毛片I成人黄在线I先锋资源男人网站中文I91久热I99人久久精品视频最新地址Ieeuss久久I成人片在线播放I欧美tk丨vk视频I夜夜久久AVI日韩人妻无码一区二区三区99I一区二区视频免费在线观看I国产第一页精品

行業動態

當前位置:首頁>>新聞中心>>行業動態 發布時間:2017-08-17 04:59:19

工廠設計模式在多串口通信中的應用

時間:2017-08-17 04:59:19 來源:本站 點擊數:755

設計模式/軟件設計模式Oesign pattern)是軟件設計過程中的經驗總結???/span> 以讓程序代碼易重用、易理解、更穩定。目前總結出來的模式有23種之多,文中主要涉及工廠模式在多串口通信軟件開發中的應用。作者針對衡器稱重系統中常用的儀表、一機一

秤、一機多秤等應用場景提出相應的解決方案。

1.引言

在軟件開發過程中,常常會碰到相似問題, 做重復的工作。如何提高效率保證代碼的可靠 性,可重用性昵?前人總結出了很多軟件開發模 式,來解決相應的問題。文中將針對“軟件設計 模式”工廠模式”在多串口通信軟件開發中 的應用展開描述。

2.設計模式簡介

設計模式(Oesign patten)是一套被反復使用 的、多數人知曉的、經過分類編目的、代碼設計 經驗的總結。使用設計模式是為了重用代碼、讓 代碼更容易被他人理解、保證代碼可靠性。最早 提出設計模式思想是在1994年,由Erich Gamma 等人,在其所著的《面象對象的可復用元素》一 書中提出的。總結出三大類別創建型模式、結 構型模式、行為型模式,六大原則(開閉原則、 里氏原則、依賴倒置原則、接口隔離原則、迪米 特法則、合成復用原則,23種設計模式俱體內 容請參看相關書籍。本文將重點介紹:工廠設計 模式。它屬于創建型模式,即在創建對象的過 程中,隱藏創建邏輯,這使得程序在創建給定實 例對象時,可以提供靈活的判斷。

3.衡器軟件中的問題

作者長期從事衡器稱重軟件的設計。在長期 的工作經歷中,參與了很多項目,其中多數都會 用到串口通信。會遇到以下幾種典型的應用問題:

1)在使用衡器儀表時,串口是常見的對外通 信方式。稱重儀表廠家多,型號不一,通信格式 各不相同。能不能使用統一的開發模式,進行管 理,減少重復性的工作昵?

2)地磅稱重管理中,有一機一秤,也有 機多秤的模式。在多秤同時使用時,儀表型 號可能相同,也可能不同,有沒有簡潔、高效的 擴展軟件代碼的方法昵?

4.工廠設計模式

針對上述問題,作者通過實踐和總結,覺得軟件開發模式的中的工廠模式”比較適合解決 這類問題。

什么是工廠模式?顧名思義,就是客戶提 訂單,交給工廠生產,最后得到“產 品”。工廠模式模擬了這個過程。“工廠模 式”分為三種子類別:簡單工廠、工廠方法、抽 象工廠。這三種方法,本質相同,但各有其應用 場景,簡單來說,如下:

1)簡單工廠:一個工廠生產多種不同產品。

2)工廠方法:多個工廠,每個工廠生產一種 產品。是對簡單工廠的改進,因為“簡單工 廠”不符合開閉原則”。

3)抽象工廠:多個工廠,每個工廠生產一種 或多種產品。可以根據訂單需求,生產“產 品”訂單中可能存在多種不同的產品”需 求,可以交給不同的“工廠生產”。

這三種模式都能解決衡器軟件中的儀表串口 通信問題。文中重點講解簡單工廠“抽象 工廠”這兩種模式,這兩種模式比較容易理解, 其它的模式也可依此類推。

5.面向對象的實現過程

設計模式的運用與編程語言無關。作者以常 用的C++語言為例,說明面向對象的封裝過程。

首先,作者封裝了一組串口通信類,將串口 通信過程中,常用的的方法,封裝在一個類族里, 為后期模式設計提供基礎如圖1所示。

云網客1.jpg

串口類庫可根據需要不斷擴展,封裝好后, 與下文的設計模式類隔離,減少代碼耦合。這個 類族中的底層子類,相當于工廠”里生產的產品

1)簡單工廠的實現過程

簡單工廠模式如圖2所示,將產品”實例的創建放到工廠方法中完成,從而為產品的選擇提供靈活性。這里的產品就是儀表型號,工廠就是 TMeterFactory 類,其方法 CreateMeter 可以創建各種儀表的實例。

云網客2.jpg

主要部分的偽代碼如下:

#include

classTM eterfactory//儀表工廠類

{

Private:

m apm _m eter;// 管理 所有的儀表對象 public

TM eterfactory0;

ICommO bject*C reateM eter (char*strM eter- Name);//創建儀表實例方法

~TM eterFactoryO;//銷毀儀表類實例

};

ICommObject*TM eterFactory::CreateM eter (char*strM eterN am e)

{ //檢查儀表實例是否存在 ifm _m eter.end )!=m _m eter.find (strM eterN am e)) return m_m eter.find strM eterN am e)->second; //創建新的儀表實例 ICommO bject*pM eter=N ULL; if(!strcm p "X K 3190A 9",strM eterN am e)) pM eter=new TXK3190A9 0; else return NULL;

...//繼續添加代碼,創建其他儀表型號 m_meter.insert std ^pa ir rM eterN am e,pM eter)); return pMeter;

}

客戶端調用代碼如下 charweight[10]={0};

TMeterFactory*pFactory=new TMeterFactory;

 

ICommObject*pMeter=pFactory->CreateMe-

 

ter(“XK3190A9”);

 

strcpy(weight,pMeter->read());// 讀取重量,中間省略 open,write,close 等方法代碼

 

上述過程中,可以看到:在使用簡單工廠模式 (或其它模式) 時,并不一定能減少代碼量,但是易于后期擴展和理解。從客戶端的調用代碼可以看出:模式提供了統一的接口,調用者只要給出儀表型號,就能得到相應的類實例。實例創建過程封裝到其他代碼塊中,只要那部分代碼沒有問題,調用者就能得到正確的結果,相當于黑盒操作。這種方式,適合多人分工合作,共同開發軟件。

 

(2) 抽象工廠的實現過程

 

簡單工廠模式適合一機一秤的稱重軟件開發。抽象工廠模式適合解決一機多秤的稱重模式。他將儀表實例創建過程推遲到子類中完成,從而為訂單中的多種產品組合提供機會。以下是一機一秤一機兩秤類圖如圖 3 所示。

云網客3.jpg

由上圖可以看出,每一個工廠代表一種稱重模式,可以從一機一秤,擴展到一機 n 。而每一種稱重模式中,可以用同一種型號的儀表,也可以用不同種型號的儀表組成系統。具

 

體實施時,可根據需求選擇。C++ 偽代碼如下: class ICommObject;

 

class IFactory // 抽象工廠

 

{

 

public:

virtual ICommObject * CreateMeter1()=0; // 創建儀表 1,此處為純虛方法

 

virtual ICommObject * CreateMeter2 ()=0; // 創建儀表 2

 

// 可以繼續添加 protected:

 

IFactroy();

 

};

 

Class TOne_pc_and_one_scale:public IFactory// 具體工廠:實現一機一秤功能

 

{

 

public:

 

ICommObject * CreateMeter1 () {return new TXK3190A9;}

 

};

 

Class TOne_pc_and_two_scale:public IFactroy// 具體工廠:實現一機兩秤功能

 

{

 

public:

 

ICommObject * CreateMeter1(){return new

 

T8142pro;}

 

ICommObject * CreateMeter2(){return new

 

XK3180;}

 

};

 

客戶端調用代碼如下: // 一機一秤調用方法

char weight_A9[10]={0};// 重量字符串

 

IFactory * pScale=new TOne_pc_and_one_scale;

 

ICommObject * pA9=pScale->CreateMeter1();

 

strcpy(weight,pA9->read());// 讀取重量到 weight

 

中,中間省略 open,write,close 等方法代碼

 

 

// 一機兩秤調用方法 char weight_8142[10]={0},weight_3180[10]={0};//

重量字符串

 

IFactory * pScale=new TOne_pc_and_two_scale; // 創建工廠實例

ICommObject * p3180=pScale->CreateMeter1(); ICommObject * p8142=pScale->CreateMeter2(); strcpy (weight_3180,p3180->read ());// 讀取重量

到 weight_A9 中,中間省略 open,write,close 等方法代碼

 

strcpy (weight_8142,p8142->read ()); // 讀取重量到 weight_814

 

使用抽象工廠模式,在添加新的工廠時,并不影響已有的工廠代碼,已有的代碼基本不需改動,提高了程序的穩定性,符合

閉原則,因此成為 23 種軟件設計模式之一。

 

6.工廠模式在稱重傳感器溫度測試軟件中的應用

 

作者在編寫 《傳感器溫度測試軟件》 的過程中,使用了數據采集板,每個板上有一個串口,多塊板同時向上位機發送傳感器的實時溫度測量數據。利用抽象工廠設計模式,很好的完成了軟件編寫。原來在其他軟件中的通信代碼 (即圖 1),移植過來使用,進行部分擴展,實現了代碼重用。軟件可以對每一個串口的通信數據和通信參數,進行單獨的管理。如下圖:

云網客6.jpg

7.相關問題討論

Windows 系統中,某個串口設備,在某一時刻,只能被一個軟件使用 (虛擬串口設備除外)。多個進程或線程同時使用,會產生沖突。沖突的情況分為三種:

(1) 兩個 (或兩個以上) 不同的軟件,同時打開同一個串口

(2) 同一個軟件,運行兩次實例 (或兩次以上) 在內存中,同時打開同一個串口

(3) 同一個軟件,運行一次,但在軟件內部兩次(或兩次以上) 打開同一個串口

、②兩種情況涉及不同進程之間的資源搶占的沖突,可以考慮用進程互斥的方法解決,不屬于軟件模式的解決范疇

對于第③種情況,可用“單例模式解決軟件內部多次、同時讀、寫同一個串口沖突的問題。

單例模式的目標就是:每個類只能創建一個實例。類的構造函數拷貝構造函數設為私有保護權限,類實例由其靜態成員函數創建。

文中的工廠模式也涉及到串口的調用,因此可能有人會問:工廠模式能否結合單例模式同時使用呢?答案是否定的。單例模式封裝的對象是串口硬件實體。本文中的工廠模式是以稱重儀表為對象,進行封裝。兩者的出發點和角度不同,雖然都用到了串口通信,但是功能需求不同。物理串口,同一時刻,只能被一個實例使用,因此用單例模式比較合理。而稱重儀表類,則存在多臺相同型號的儀表同時使用的情況,所以需要創建同一個類的多個實例。這些屬于面對的編程思想,需要結合實踐去體會他們的異同。

8.總結

在軟件設計過程中,不僅衡器稱重軟件一機多秤(即一臺上位機,多臺稱重儀表同時工作),可以使用工廠模式來設計,其它類似的涉及多臺儀表,多個串口同時工作的軟件,都可參考這種模式。軟件模式的使用,使代碼易于閱讀,管理,能提高代碼的重用效率。實際軟件開發中,具體使用哪種模式,是一種模式,還是多種模式混合使用?對于開發者來說,需要有一定行業經驗,總結出用戶的需求,整理出規律性的內容,再選擇合適開發模式,才能找到一條正確的道路。

 

 


亚洲欧美日本在线 | 最好看的电影2019中文字幕 | 捆绑调教视频网站 | 国产字幕在线观看 | 亚洲精品久久久蜜桃网尤妮丝 | 香蕉视频黄色在线观看 | 日韩午夜| 国产美女精品视频国产 | 午夜精品久久久久久久99黑人 | 日韩av三级在线观看 | 老司机在线永久免费观看 | 精品国产一区二区三区久久 | 超碰超碰超碰超碰 | 97在线观看| 视频在线中文字幕 | 国产一区二区小说 | 漂亮人妻被黑人久久精品 | 男人草女人 | 天堂网站 | 国产精品theporn动漫 | 男人插女人下面视频 | 成人手机视频在线观看 | 午夜黄色大片 | 国产在线不卡av | 无限资源日本好片 | 在线观看av的网站 | 亚洲论理 | 无套暴操 | 91高跟黑色丝袜呻吟在线观看 | 精品日韩制服无码久久久久久 | 外国电影免费观看高清完整版 | 亚洲男人天堂2019 | 麻豆视频在线观看免费网站 | 成人免费淫片aa视频免费 | 亚洲成人激情在线 | 污视频在线免费 | 美女扒开尿口给男人捅 | 视频一区二区三区精品 | 亚洲精品一区二区在线观看 | 久久久久成人精品 | 伦理片av| 日本一区二区高清免费 | 一本一道久久a久久精品综合 | 永久久久久久久 | 亚洲综合伊人久久 | 五月天色丁香 | 永久影院 | 国产丝袜视频在线 | 国产69精品久久久久777 | 欧美成人免费在线视频 | 国产高清免费视频 | 国产一区二区久久久 | 中文字幕乱视频 | 亚洲综合首页 | 欧美成人精品一区二区三区 | 欧美伦理影院 | 久久激情影院 | 人妻巨大乳一二三区 | 蜜桃av网| 久久久精品一区二区涩爱 | 黄a免费网络| 日韩不卡在线 | 性色欲网站人妻丰满中文久久不卡 | 粉嫩精品久久99综合一区 | 经典杯子蛋糕日剧在线观看免费 | 久久人人草 | 男女爱爱福利视频 | 欧美三级 欧美一级 | 91视频插插插 | 五月天黄色网 | 女人洗澡一级特黄毛片 | 国产成人久久777777 | 男人靠女人免费视频网站 | 观看av| 日韩av中文字幕在线免费观看 | 国产ts在线 | 大乳村妇的性需求 | 久久久com| 国产精品国产精品国产 | 岛国av一区二区三区 | 男女啪动最猛动态图 | 五月激情婷婷在线 | 又黄又爽在线观看 | 日本美女一级视频 | 中文字幕在线观看一区二区 | 日本黄页视频 | 天天操天天操天天操天天操天天操 | 美日韩毛片 | 不卡的日韩av | 日本黄页网站 | 少妇精品一区二区 | 大j8福利视频导航 | 国产伦精品一区二区三区网站 | 99re免费视频精品全部 | 日本裸体视频 | 超碰天堂 | 亚洲视频高清 | 国产欧美一区二区三区鸳鸯浴 | 日韩在线三区 | 1769国产精品视频 | 欧美精品入口蜜桃 | 97精品超碰一区二区三区 | 欧美日韩成人免费观看 | 久久精品久 | ktv做爰视频一区二区 | 欧美日韩在线网站 | 日本天堂在线播放 | 自拍偷拍999 | 国产福利三区 | 在线观看的黄网 | 成人在线免费 | 国产精品手机在线观看 | 天天槽| 久国久产久精永久网页 | 丁香婷婷激情五月 | 亚洲欧美激情图片 | 黑人3p波多野结衣在线观看 | 国产最新视频在线 | 干干天天 | avwww.| 性欧美4khd高清极品 | 伊人91在线 | 午夜在线视频观看 | 国产ts丝袜人妖系列视频 | 亚洲高清视频一区 | 女生被草 | 超碰在线网址 | 天天色小说 | 国产精品久久久久久亚洲色 | 日韩在线专区 | 亚洲欧美日韩专区 | 国产香蕉尹人视频在线 | 天天av天天干 | 一区三区视频在线观看 | 中文字幕亚洲乱码熟女一区二区 | 国产精品伦一区二区三级视频 | 国产精品嫩草影院精东 | 免费成人美女在线观看. | 手机看片国产日韩 | 伊人精品在线视频 | 亚洲欧洲在线观看 | www精品视频| 国产精品久久久久久久久久久久久久 | 亚洲欧美在线视频观看 | 草逼免费视频 | 欧美aaaaaaaaa | 成年人性生活免费视频 | 欧美理伦少妇2做爰 | 97在线免费 | 99久久久无码国产精品性青椒 | 强迫凌虐淫辱の牝奴在线观看 | 午夜不卡在线观看 | 又黄又湿的网站 | 亚洲高清在线观看 | 一本一道波多野结衣一区二区 | 林雅儿欧洲留学恋爱日记在线 | 亚洲24p| 潘甜甜在线 | 伦理自拍 | 国产精品毛片一区二区三区 | 九九影视理伦片 | 欧美亚韩一区二区三区 | 五月婷综合网 | 亚洲成人网页 | 日本黄色大片在线观看 | 91手机在线播放 | 亚洲精品久久久久 | 美日韩中文字幕 | 日韩操操 | 天天干视频在线 | 中文字字幕在线中文乱码电影 | 天天5g天天看| 少妇高潮露脸国语对白 | 中文字幕久久久 | 中国亚洲老头同性gay男男… | 色秀av| 色av影院| 麻豆网站免费看 | 日本在线观看一区二区三区 | 国产高清www | 亚洲视频色 | 在线视频 亚洲 | 农村少妇 | 成人观看网站 | 欧美日韩亚洲精品一区二区 | 一区二区三区四区免费视频 | 黄色大片儿 | 久久精品一区二区 | 国产一级爱 | 国产午夜麻豆影院在线观看 | 极品人妻一区二区 | 久久不射影院 | 日韩电影三级 | 国产精品激情偷乱一区二区∴ | 91国产在线免费观看 | 国产精品麻豆一区 | 国产精品国产三级国产a | 国产精品jizz在线观看软件 | 亚洲av无码久久忘忧草 | 色视频导航 | 精品国产成人 | 久久久久久69 | 一级片在线免费观看视频 | 污黄视频网站 | 蜜臀av无码一区二区三区 | 成人做爰视频www | 欧美aaa大片 | 国产激情免费视频 | 尤物网在线| 欧美一区二区视频免费观看 | 日韩中文字幕网站 | 美女黄页在线观看 | 最近国语视频在线观看免费播放 | 亚洲看片网 | 成人黄色录像 | 日本中出视频 | 青青草原免费观看 | 国产成人在线视频 | 精品熟女一区二区三区 | 男男play呻吟动漫网站 | 久热精品在线视频 | 亚洲精品区 | 98av视频| 精品人妻无码一区二区色欲产成人 | 国产精品扒开做爽爽爽的视频 | 午夜宅男影院 | 天天色综| 国产又粗又猛又黄视频 | 国产白丝av | 校园春色欧美 | 欧美日韩在线免费播放 | 欧美一区二区三区的 | 亚洲免费看片 | 亚洲最大福利视频 | 自拍偷拍日韩 | 在线a级| 日日摸日日碰夜夜爽av | 一区二区三区在线免费播放 | 一区二区三区国产视频 | 中文在线观看高清视频 | 日韩综合精品 | 日韩色图一区 | 男女一进一出视频 | 中文一区在线观看 | 国产人妻大战黑人20p | 91中文字幕 | 国产黄色高清 | 成人毛片在线 | 欧美自拍区 | 亚洲精品国产精品乱码不卡√香蕉 | 九九精品九九 | 亚洲精品视频免费在线观看 | 黄色视屏网站 | 久久精品国产精品亚洲色婷婷 | 玖玖爱在线观看 | 亚洲欧美日韩一区 | 欧美在线一区二区 | 中国二级毛片 | 超碰婷婷 | 啪免费 | 国产真人无遮挡作爱免费视频 | 男人的天堂在线观看av | 日日骚一区二区 | 91av在线免费视频 | 嫩草影院中文字幕 | 青草成人免费视频 | 久久无码人妻丰满熟妇区毛片 | 天天看天天摸天天操 | 女人扒开屁股让男人桶 | 无码人妻aⅴ一区二区三区69岛 | 欧美大黑b | 又粗又猛又爽又黄的视频 | 国产精品第一国产精品 | 麻豆av一区二区三区 | 国产毛片a | 欧美日韩伊人 | 日韩精品系列 | 日韩视频在线观看二区 | 69视频网址 | 欧美精品www| 五月天久久久久 | 色屁屁www影院免费观看入口 | 精品97人妻无码中文永久在线 | 91玉足脚交嫩脚丫在线播放 | 黄色国产一级片 | 乱lun合集男男高h | 天堂中文字幕在线观看 | 看黄色的网站 | 国产偷怕 | 成人三级黄色 | 日本91av | 日韩欧美一区在线 | 日韩精品电影在线观看 | 亚洲区久久 | 国产激情无套内精对白视频 | 免费20分钟超爽视频 | 日韩经典一区 | 亚洲精品成| 日本a级黄 | 日日色综合 | 在线播放精品视频 | 成人免费毛片入口 | 手机看片日韩福利 | 人人澡人人射 | 日韩精品视频中文字幕 | 色黄网站在线观看 | 在线观看免费视频一区二区 | 国产午夜精品久久 | 视频福利在线观看 | 久久成人免费电影 | 爱情岛论坛亚洲入口 | 国产美女一区二区三区 | 日批视频免费观看 | 欧美精品一二三四区 | 大尺度舌吻呻吟声 | 麻豆国产精品 | 内地毛片| 色视频国产 | 日本一区二区三区视频免费看 | 中国人妖和人妖做爰 | 五月天国产在线 | 性爱一级视频 | 中出白浆 | 日本理论中文字幕 | 天天摸夜夜爽 | 精品人妻无码一区二区三区换脸 | 一区二区三区黄 | 夜夜操操操 | 天堂av中文在线 | 浓精喷进老师黑色丝袜在线观看 | 国产精品一线 | 黄色aaa大片 | 人人干在线视频 | 国产人妻大战黑人20p | 国产高潮视频在线观看 | 91久久精品在线 | 性天堂网| 欧美xxxx83d | 爽妇网国产精品 | 亚洲av无码一区二区三区在线播放 | 免费成人深夜夜行p站 | 妹子干综合网 | 福利社av | 久久久久国产精品熟女影院 |