日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁 > 科技  > 軟件

嵌入式框架設(shè)計中的四種常用模式

來源: 責(zé)編: 時間:2023-10-26 17:11:25 268觀看
導(dǎo)讀1. 模板方法模式模板方法模式是框架中最常用的設(shè)計模式。其根本的思路是將算法由框架固定,而將算法中具體的操作交給二次開發(fā)者實現(xiàn)。例如一個設(shè)備初始化的邏輯,框架代碼如下:TBool CBaseDevice::Init(){ if ( Download

1. 模板方法模式

模板方法模式是框架中最常用的設(shè)計模式。其根本的思路是將算法由框架固定,而將算法中具體的操作交給二次開發(fā)者實現(xiàn)。例如一個設(shè)備初始化的邏輯,框架代碼如下:z7E28資訊網(wǎng)——每日最新資訊28at.com

TBool CBaseDevice::Init(){  if ( DownloadFPGA() != KErrNone )  {    LOG(LOG_ERROR,_L(“Download FPGA fail”));    return EFalse;  }  if ( InitKeyPad() != KerrNone )  {    LOG(LOG_ERROR,_L(“Initialize keypad fail”));    return EFalse;  }  return ETrue;}

z7E28資訊網(wǎng)——每日最新資訊28at.com

DownloadFPGA和InitKeyPad都是CBaseDevice定義的虛函數(shù),二次開發(fā)者創(chuàng)建一個繼承于CBaseDevice的子類,具體來實現(xiàn)這兩個接口。框架定義了調(diào)用的次序和錯誤的處理方式,二次開發(fā)者無須關(guān)心,也無權(quán)決定。z7E28資訊網(wǎng)——每日最新資訊28at.com

z7E28資訊網(wǎng)——每日最新資訊28at.com

2. 創(chuàng)建型模式

由于框架通常都涉及到各種不同子類對象的創(chuàng)建,創(chuàng)建型模式是經(jīng)常使用的。例如一個繪圖軟件的框架,有一個基類定義了圖形對象的接口,基于它可以派生出橢圓,矩形,直線各種子類。當(dāng)用戶繪制一個圖形時,框架就要實例化該子類。這時候可以用工廠方法,原型方法等等。z7E28資訊網(wǎng)——每日最新資訊28at.com

class CDrawObj{  public:    virtual int DrawObjTypeID()=0;    virtual Icon GetToolBarIcon()=0;    virtual void Draw(Rect rect)=0;    virtual CDrawObj* Clone()=0;};

z7E28資訊網(wǎng)——每日最新資訊28at.com

3. 消息訂閱模式

消息訂閱模式是最常用的分離數(shù)據(jù)和界面的方式。界面開發(fā)者只需要注冊需要的數(shù)據(jù),當(dāng)數(shù)據(jù)變化時框架就會將數(shù)據(jù)“推”到界面。界面開發(fā)者可以無須關(guān)注數(shù)據(jù)的來源和內(nèi)部組織形式。z7E28資訊網(wǎng)——每日最新資訊28at.com

消息訂閱模式最常見的問題是同步模式下如何處理重入和超時。作為框架設(shè)計者,一定要考慮好這個問題。所謂重入,是二次開發(fā)者在消息的回調(diào)函數(shù)中執(zhí)行訂閱/取消訂閱的操作,這會破壞消息訂閱的機制。所謂超時是指二次開發(fā)者的消息回調(diào)函數(shù)處理時間過長,導(dǎo)致其他消息無法響應(yīng)。最簡單的辦法是使用異步模式,讓訂閱者和數(shù)據(jù)發(fā)布者在獨立進程/線程中運行。如果不具備此條件,則必須作為框架的重要約定,禁止二次開發(fā)者產(chǎn)生此類問題。z7E28資訊網(wǎng)——每日最新資訊28at.com

4. 裝飾器模式

裝飾器模式賦予了框架在后期增加功能的能力。框架定義裝飾器的抽象基類,而由具體的實現(xiàn)者實現(xiàn),動態(tài)地添加到框架中。z7E28資訊網(wǎng)——每日最新資訊28at.com

舉一個游戲中的例子,圖形繪制引擎是一個獨立的模塊,比如可以繪制人物的靜止,跑動等圖像。如果策劃決定在游戲中增加一種叫“隱身衣”的道具,要求穿著此道具的玩家在屏幕上顯示的是若有若無的半透明圖像。應(yīng)該如何設(shè)計圖像引擎來適應(yīng)后期的游戲升級呢?z7E28資訊網(wǎng)——每日最新資訊28at.com

當(dāng)隱身衣被裝備后,就向圖像引擎添加一個過濾器。這是個極度簡化的例子,實際的游戲引擎要比這個復(fù)雜。裝飾器模式還常見用于數(shù)據(jù)的前置和后置處理上。z7E28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-15211-0.html嵌入式框架設(shè)計中的四種常用模式

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: C++取地址運算符“&”不能施加在常量和表達式上面的原因

下一篇: 實戰(zhàn)!使用阿里 Arthas 工具分析 CPU 飆高

標(biāo)簽:
  • 熱門焦點
  • 0糖0卡0脂 旭日森林仙草烏龍茶優(yōu)惠:15瓶到手29元

    旭日森林無糖仙草烏龍茶510ml*15瓶平時要賣為79.9元,今日下單領(lǐng)取50元優(yōu)惠券,到手價為29.9元。產(chǎn)品規(guī)格:0糖0卡0脂,添加草本仙草汁,清涼爽口,富含茶多酚,保留
  • 一篇聊聊Go錯誤封裝機制

    %w 是用于錯誤包裝(Error Wrapping)的格式化動詞。它是用于 fmt.Errorf 和 fmt.Sprintf 函數(shù)中的一個特殊格式化動詞,用于將一個錯誤(或其他可打印的值)包裝在一個新的錯誤中。使
  • 學(xué)習(xí)JavaScript的10個理由...

    作者 | Simplilearn編譯 | 王瑞平當(dāng)你決心學(xué)習(xí)一門語言的時候,很難選擇到底應(yīng)該學(xué)習(xí)哪一門,常用的語言有Python、Java、JavaScript、C/CPP、PHP、Swift、C#、Ruby、Objective-
  • 之家push系統(tǒng)迭代之路

    前言在這個信息爆炸的互聯(lián)網(wǎng)時代,能夠及時準(zhǔn)確獲取信息是當(dāng)今社會要解決的關(guān)鍵問題之一。隨著之家用戶體量和內(nèi)容規(guī)模的不斷增大,傳統(tǒng)的靠"主動拉"獲取信息的方式已不能滿足用
  • 大廠卷向扁平化

    來源:新熵作者丨南枝 編輯丨月見大廠職級不香了。俗話說,兵無常勢,水無常形,互聯(lián)網(wǎng)企業(yè)調(diào)整職級體系并不稀奇。7月13日,淘寶天貓集團啟動了近年來最大的人力制度改革,目前已形成一
  • 機構(gòu)稱Q2國內(nèi)智能手機銷量同比下滑4% vivo份額重回第1

    7月29日消息,根據(jù)市場調(diào)查機構(gòu)Counterpoint Research公布的最新報告,2023年第2季度中國智能手機銷量同比下降4%,創(chuàng)新自2014年以來第2季度銷量新低。報
  • 聯(lián)想小新Pad Pro 12.6將要推出,搭載高通驍龍 870 處理器

    聯(lián)想小新Pad Pro 12.6將于秋季新品會上推出,官方按照慣例直接在發(fā)布會前給出了機型的所有參數(shù)。聯(lián)想小新 Pad Pro 12.6 將搭載高通驍龍 870 處理器,重量為 5
  • SN570 NVMe SSD固態(tài)硬盤 價格與性能兼具

    SN570 NVMe SSD固態(tài)硬盤是西部數(shù)據(jù)發(fā)布的最新一代WD Blue系列的固態(tài)硬盤,不僅閃存技術(shù)更為精進,性能也得到了進一步的躍升。WD Blue SN570 NVMe SSD的包裝外
  • “買真退假” 這種“羊毛”不能薅

    □ 法治日報 記者 王春   □ 本報通訊員 胡佳麗  2020年初,還在上大學(xué)的小東加入了一個大學(xué)生兼職QQ群。群主“七王”在群里介紹一些刷單賺
Top 主站蜘蛛池模板: 义乌市| 八宿县| 确山县| 井研县| 彝良县| 方山县| 安多县| 鄂州市| 琼海市| 都匀市| 宜阳县| 奎屯市| 绥阳县| 文安县| 哈尔滨市| 谢通门县| 乌鲁木齐市| 遵义市| 鲁甸县| 盐源县| 邢台县| 长沙县| 大港区| 边坝县| 咸丰县| 辉南县| 五寨县| 五峰| 冀州市| 铜梁县| 吕梁市| 廊坊市| 松滋市| 安顺市| 靖江市| 灵寿县| 宿州市| 布尔津县| 荥阳市| 永登县| 通许县|