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

當前位置:首頁 > 科技  > 軟件

嵌入式框架設計中的四種常用模式

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

1. 模板方法模式

模板方法模式是框架中最常用的設計模式。其根本的思路是將算法由框架固定,而將算法中具體的操作交給二次開發(fā)者實現(xiàn)。例如一個設備初始化的邏輯,框架代碼如下:01d28資訊網(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;}

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

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

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

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

由于框架通常都涉及到各種不同子類對象的創(chuàng)建,創(chuàng)建型模式是經(jīng)常使用的。例如一個繪圖軟件的框架,有一個基類定義了圖形對象的接口,基于它可以派生出橢圓,矩形,直線各種子類。當用戶繪制一個圖形時,框架就要實例化該子類。這時候可以用工廠方法,原型方法等等。01d28資訊網(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;};

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

3. 消息訂閱模式

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

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

4. 裝飾器模式

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

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

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

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

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

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

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

標簽:
  • 熱門焦點
  • K60至尊版狂暴引擎2.0加持:超177萬跑分斬獲性能第一

    Redmi的后性能時代戰(zhàn)略發(fā)布會今天下午如期舉辦,在本次發(fā)布會上,Redmi公布了多項關(guān)于和聯(lián)發(fā)科的深度合作,以及新機K60 Ultra在軟件和硬件方面的特性,例如:“K60 至尊版,雙芯旗艦
  • 中興AX5400Pro+上手體驗:再升級 雙2.5G網(wǎng)口+USB 3.0這次全都有

    2021年11月的時候,中興先后發(fā)布了兩款路由器產(chǎn)品,中興AX5400和中興AX5400 Pro,從產(chǎn)品命名上就不難看出這是隸屬于同一系列的,但在外觀設計上這兩款產(chǎn)品可以說是完全沒一點關(guān)系
  • 6月安卓手機性能榜:vivo/iQOO霸占旗艦排行榜前三

    2023年上半年已經(jīng)正式過去了,我們也迎來了安兔兔V10版本,在新的驍龍8Gen3和天璣9300發(fā)布之前,性能榜的榜單大體會以驍龍8Gen2和天璣9200+為主,至于那顆3.36GHz的驍龍8Gen2領(lǐng)先
  • 三言兩語說透柯里化和反柯里化

    JavaScript中的柯里化(Currying)和反柯里化(Uncurrying)是兩種很有用的技術(shù),可以幫助我們寫出更加優(yōu)雅、泛用的函數(shù)。本文將首先介紹柯里化和反柯里化的概念、實現(xiàn)原理和應用
  • 一篇文章帶你了解 CSS 屬性選擇器

    屬性選擇器對帶有指定屬性的 HTML 元素設置樣式。可以為擁有指定屬性的 HTML 元素設置樣式,而不僅限于 class 和 id 屬性。一、了解屬性選擇器CSS屬性選擇器提供了一種簡單而
  • 一個注解實現(xiàn)接口冪等,這樣才優(yōu)雅!

    場景碼猿慢病云管理系統(tǒng)中其實高并發(fā)的場景不是很多,沒有必要每個接口都去考慮并發(fā)高的場景,比如添加住院患者的這個接口,具體的業(yè)務代碼就不貼了,業(yè)務偽代碼如下:圖片上述代碼有
  • 電視息屏休眠仍有網(wǎng)絡上傳 愛奇藝被質(zhì)疑“薅消費者羊毛”

    記者丨寧曉敏 見習生丨汗青出品丨鰲頭財經(jīng)(theSankei) 前不久,愛奇藝發(fā)布了一份亮眼的一季報,不僅營收和會員營收創(chuàng)造歷史最佳表現(xiàn),其運營利潤也連續(xù)6個月實現(xiàn)增長。自去年年初
  • 本地生活這塊肥肉,拼多多也想吃一口

    出品/壹覽商業(yè) 作者/李彥編輯/木魚拼多多也看上本地生活這塊蛋糕了。近期,拼多多在App首頁“充值中心”入口上線了本機生活界面。壹覽商業(yè)發(fā)現(xiàn),該界面目前主要
  • 世界人工智能大會國際日開幕式活動在世博展覽館開啟

    30日上午,世界人工智能大會國際日開幕式活動在世博展覽館開啟,聚集國際城市代表、重量級院士專家、國際創(chuàng)新企業(yè)代表,共同打造人工智能交流平臺。上海市副市
Top 主站蜘蛛池模板: 黎川县| 永登县| 乌苏市| 阜南县| 来凤县| 新化县| 美姑县| 周宁县| 文安县| 宁津县| 东方市| 池州市| 天柱县| 盘锦市| 宁阳县| 平远县| 石嘴山市| 东辽县| 绩溪县| 虞城县| 长沙县| 南阳市| 宜州市| 兴宁市| 博兴县| 天长市| 溧阳市| 青阳县| 石嘴山市| 榕江县| 牡丹江市| 宣威市| 孙吴县| 布尔津县| 科技| 滨海县| 黄陵县| 集贤县| 鄢陵县| 墨竹工卡县| 芦山县|