成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

開發
模板方法模式是框架中最常用的設計模式。其根本的思路是將算法由框架固定,而將算法中具體的操作交給二次開發者實現。

1. 模板方法模式

模板方法模式是框架中最常用的設計模式。其根本的思路是將算法由框架固定,而將算法中具體的操作交給二次開發者實現。例如一個設備初始化的邏輯,框架代碼如下:

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;
}

DownloadFPGA和InitKeyPad都是CBaseDevice定義的虛函數,二次開發者創建一個繼承于CBaseDevice的子類,具體來實現這兩個接口??蚣芏x了調用的次序和錯誤的處理方式,二次開發者無須關心,也無權決定。

2. 創建型模式

由于框架通常都涉及到各種不同子類對象的創建,創建型模式是經常使用的。例如一個繪圖軟件的框架,有一個基類定義了圖形對象的接口,基于它可以派生出橢圓,矩形,直線各種子類。當用戶繪制一個圖形時,框架就要實例化該子類。這時候可以用工廠方法,原型方法等等。

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

3. 消息訂閱模式

消息訂閱模式是最常用的分離數據和界面的方式。界面開發者只需要注冊需要的數據,當數據變化時框架就會將數據“推”到界面。界面開發者可以無須關注數據的來源和內部組織形式。

消息訂閱模式最常見的問題是同步模式下如何處理重入和超時。作為框架設計者,一定要考慮好這個問題。所謂重入,是二次開發者在消息的回調函數中執行訂閱/取消訂閱的操作,這會破壞消息訂閱的機制。所謂超時是指二次開發者的消息回調函數處理時間過長,導致其他消息無法響應。最簡單的辦法是使用異步模式,讓訂閱者和數據發布者在獨立進程/線程中運行。如果不具備此條件,則必須作為框架的重要約定,禁止二次開發者產生此類問題。

4. 裝飾器模式

裝飾器模式賦予了框架在后期增加功能的能力??蚣芏x裝飾器的抽象基類,而由具體的實現者實現,動態地添加到框架中。

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

當隱身衣被裝備后,就向圖像引擎添加一個過濾器。這是個極度簡化的例子,實際的游戲引擎要比這個復雜。裝飾器模式還常見用于數據的前置和后置處理上。

責任編輯:趙寧寧 來源: 物聯網IoT技術
相關推薦

2023-01-04 09:37:16

2022-12-14 08:06:08

2011-04-22 09:26:57

MVC設計

2022-07-04 12:07:57

智慧城市智能建筑物聯網

2021-08-11 20:17:22

推薦算法系統

2025-02-18 16:27:01

2009-06-22 11:01:12

2011-06-01 17:35:35

Android Activity

2013-12-01 15:34:25

2009-04-11 15:12:24

2018-05-02 16:34:56

EAF嵌入式框架

2018-12-05 16:25:14

2019-10-24 07:42:28

Java引用GC

2023-07-16 22:48:59

2019-10-22 14:06:13

Docker軟件Linux

2015-05-08 12:24:10

惡意軟件逃避技術

2019-08-13 09:00:24

REST API身份認證密鑰

2012-01-18 10:20:42

框架設計

2022-09-15 18:32:13

SPI模型框架

2022-06-15 11:01:59

自定義SPIJava
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 一区二区三区影院 | 精品日韩在线 | 亚洲人va欧美va人人爽 | 国产在线观看一区二区三区 | 国产一区免费 | 男女羞羞视频网站 | 国产一区二区三区在线 | 午夜一区二区三区 | 国产精品国产馆在线真实露脸 | 欧美日韩视频网站 | 国产精品久久久久久久久久久久久久 | 毛片的网址 | av一级| 成人免费视频一区 | 在线午夜电影 | 国内在线视频 | 久久精品日产第一区二区三区 | 精品一区二区在线观看 | 一二区成人影院电影网 | 在线成人免费视频 | 亚洲精品一区二区三区中文字幕 | 欧美一级做性受免费大片免费 | 国产亚洲高清视频 | 久久久久久亚洲国产精品 | 欧美影院 | 91黄色免费看 | 亚洲视频免费在线观看 | 亚洲精品68久久久一区 | 精品视频一二区 | 99色在线| 欧美日韩国产中文字幕 | 日本黄视频在线观看 | 午夜欧美一区二区三区在线播放 | 中文字幕精品视频 | 国产精品亚洲综合 | 人人干人人干人人干 | 天堂资源视频 | 国产剧情一区 | 91亚洲一区 | 欧美中文字幕在线 | 欧美精品tv|