欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

嵌入式軟件設(shè)計(jì)模式 好文值得收藏

lucky的記錄與分享 ? 來(lái)源:lucky的記錄與分享 ? 作者:lucky的記錄與分享 ? 2022-06-20 09:09 ? 次閱讀

本文引用自本人公眾號(hào)文章:

嵌入式開(kāi)發(fā)中的兩點(diǎn)編程思想

C語(yǔ)言也很講究設(shè)計(jì)模式?一文講透

包含如下:

01)C語(yǔ)言和設(shè)計(jì)模式(繼承、封裝、多態(tài))

02)C語(yǔ)言和設(shè)計(jì)模式(訪問(wèn)者模式)

03)C語(yǔ)言和設(shè)計(jì)模式(狀態(tài)模式)

04)C語(yǔ)言和設(shè)計(jì)模式(命令模式)

05)C語(yǔ)言和設(shè)計(jì)模式(解釋器模式)

06)C語(yǔ)言和設(shè)計(jì)模式(備忘錄模式)

07)C語(yǔ)言和設(shè)計(jì)模式(觀察者模式)

08)C語(yǔ)言和設(shè)計(jì)模式(橋接模式)

09)C語(yǔ)言和設(shè)計(jì)模式(建造者模式)

10)C語(yǔ)言和設(shè)計(jì)模式(中介者模式)

11)C語(yǔ)言和設(shè)計(jì)模式(策略模式)

12)C語(yǔ)言和設(shè)計(jì)模式(適配器模式)

13)C語(yǔ)言和設(shè)計(jì)模式(裝飾模式)

14)C語(yǔ)言和設(shè)計(jì)模式(享元模式)

15)C語(yǔ)言和設(shè)計(jì)模式(代理模式)

16)C語(yǔ)言和設(shè)計(jì)模式(外觀模式)

17)C語(yǔ)言和設(shè)計(jì)模式(迭代器模式)

18)C語(yǔ)言和設(shè)計(jì)模式(抽象工廠模式)

19)C語(yǔ)言和設(shè)計(jì)模式(責(zé)任鏈模式)

20)C語(yǔ)言和設(shè)計(jì)模式(工廠模式)

21)C語(yǔ)言和設(shè)計(jì)模式(模板模式)

22)C語(yǔ)言和設(shè)計(jì)模式(組合模式)

23)C語(yǔ)言和設(shè)計(jì)模式(原型模式)

24)C語(yǔ)言和設(shè)計(jì)模式(單件模式)

25)C語(yǔ)言和設(shè)計(jì)模式(開(kāi)篇)

-----------------------
01)C語(yǔ)言和設(shè)計(jì)模式(繼承、封裝、多態(tài))

記得還在我們大學(xué)C++第一門(mén)課的時(shí)候,老師就告訴我們說(shuō),C++是一門(mén)面向?qū)ο蟮恼Z(yǔ)言。C++有三個(gè)最重要的特點(diǎn),即繼承、封裝、多態(tài)。等到后來(lái)隨著編碼的增多和工作經(jīng)驗(yàn)的積累,我也慢慢明白了面向?qū)ο蟮暮x??墒?,等我工作以后,使用的編程語(yǔ)言更多的是C語(yǔ)言,這時(shí)候我又想能不能把C語(yǔ)言變成面向?qū)ο蟮恼Z(yǔ)言呢?等到后來(lái)通過(guò)思考和實(shí)踐,我發(fā)現(xiàn)其實(shí)C語(yǔ)言也是可以面向?qū)ο蟮模彩强梢詰?yīng)用設(shè)計(jì)模式的,關(guān)鍵就在于如何實(shí)現(xiàn)面向?qū)ο笳Z(yǔ)言的三個(gè)重要屬性。
(1)繼承性
typedef struct _parent
{
int data_parent;
}Parent;
typedef struct _Child
{
struct _parent parent;
int data_child;
}Child;
在設(shè)計(jì)C語(yǔ)言繼承性的時(shí)候,我們需要做的就是把基礎(chǔ)數(shù)據(jù)放在繼承的結(jié)構(gòu)的首位置即可。這樣,不管是數(shù)據(jù)的訪問(wèn)、數(shù)據(jù)的強(qiáng)轉(zhuǎn)、數(shù)據(jù)的訪問(wèn)都不會(huì)有什么問(wèn)題。
(2)封裝性
struct _Data;
typedef void (*process)(struct _Data* pData);
typedef struct _Data
{
int value;
process pProcess;
}Data;
封裝性的意義在于,函數(shù)和數(shù)據(jù)是綁在一起的,數(shù)據(jù)和數(shù)據(jù)是綁在一起的。這樣,我們就可以通過(guò)簡(jiǎn)單的一個(gè)結(jié)構(gòu)指針訪問(wèn)到所有的數(shù)據(jù),遍歷所有的函數(shù)。封裝性,這是類(lèi)擁有的屬性,當(dāng)然也是數(shù)據(jù)結(jié)構(gòu)體擁有的屬性。
(3)多態(tài)
typedef struct _Play
{
void* pData;
void (*start_play)(struct _Play* pPlay);
}Play;
多態(tài),就是說(shuō)用同一的接口代碼處理不同的數(shù)據(jù)。比如說(shuō),這里的Play結(jié)構(gòu)就是一個(gè)通用的數(shù)據(jù)結(jié)構(gòu),我們也不清楚pData是什么數(shù)據(jù),start_play是什么處理函數(shù)?但是,我們處理的時(shí)候只要調(diào)用pPlay->start_play(pPlay)就可以了。剩下來(lái)的事情我們不需要管,因?yàn)椴煌慕涌跁?huì)有不同的函數(shù)去處理,我們只要學(xué)會(huì)調(diào)用就可以了。

-----------------------

02)C語(yǔ)言和設(shè)計(jì)模式(訪問(wèn)者模式)


不知不覺(jué)當(dāng)中,我們就到了最后一種設(shè)計(jì)模式,即訪問(wèn)者模式。訪問(wèn)者模式,聽(tīng)上去復(fù)雜一些。但是,這種模式用簡(jiǎn)單的一句話說(shuō),就是不同的人對(duì)不同的事物有不同的感覺(jué)。比如說(shuō)吧,豆腐可以做成麻辣豆腐,也可以做成臭豆腐??墒?,不同的地方的人未必都喜歡這兩種豆腐。四川的朋友可能更喜歡辣豆腐,江浙的人就可能對(duì)臭豆腐更喜歡一些。那么,這種情況應(yīng)該怎么用設(shè)計(jì)模式表達(dá)呢?
typedef struct _Tofu
{
int type;
void (*eat) (struct _Visitor* pVisitor, struct _Tofu* pTofu);
}Tofu;
typedef struct _Visitor
{
int region;
void (*process)(struct _Tofu* pTofu, struct _Visitor* pVisitor);
}Visitor;
就是這樣一個(gè)豆腐,eat的時(shí)候就要做不同的判斷了。
void eat(struct _Visitor* pVisitor, struct _Tofu* pTofu)
{
assert(NULL != pVisitor && NULL != pTofu);
pVisitor->process(pTofu, pVisitor);
}
既然eat的操作最后還是靠不同的visitor來(lái)處理了,那么下面就該定義process函數(shù)了。
void process(struct _Tofu* pTofu, struct _Visitor* pVisitor)
{
assert(NULL != pTofu && NULL != pVisitor);
if(pTofu->type == SPICY_FOOD && pVisitor->region == WEST ||
pTofu->type == STRONG_SMELL_FOOD && pVisitor->region == EAST)
{
printf("I like this food!\n");
return;
}
printf("I hate this food!\n");
}

-----------------------------------------------------

03)C語(yǔ)言和設(shè)計(jì)模式(狀態(tài)模式)

狀態(tài)模式是協(xié)議交互中使用得比較多的模式。比如說(shuō),在不同的協(xié)議中,都會(huì)存在啟動(dòng)、保持、中止等基本狀態(tài)。那么怎么靈活地轉(zhuǎn)變這些狀態(tài)就是我們需要考慮的事情。假設(shè)現(xiàn)在有一個(gè)state,
typedef struct _State
{
void (*process)();
struct _State* (*change_state)();
}State;
說(shuō)明一下,這里定義了兩個(gè)變量,分別process函數(shù)和change_state函數(shù)。其中proces函數(shù)就是普通的數(shù)據(jù)操作,
void normal_process()
{
printf("normal process!\n");
}
change_state函數(shù)本質(zhì)上就是確定下一個(gè)狀態(tài)是什么。
struct _State* change_state()
{
State* pNextState = NULL;
pNextState = (struct _State*)malloc(sizeof(struct _State));
assert(NULL != pNextState);
pNextState ->process = next_process;
pNextState ->change_state = next_change_state;
return pNextState;
}
所以,在context中,應(yīng)該有一個(gè)state變量,還應(yīng)該有一個(gè)state變換函數(shù)。
typedef struct _Context
{
State* pState;
void (*change)(struct _Context* pContext);
}Context;
void context_change(struct _Context* pContext)
{
State* pPre;
assert(NULL != pContext);
pPre = pContext->pState;
pContext->pState = pPre->changeState();
free(pPre);
return;
}

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5094

    文章

    19184

    瀏覽量

    307857
  • C語(yǔ)言
    +關(guān)注

    關(guān)注

    180

    文章

    7614

    瀏覽量

    137780
  • 嵌入式軟件
    +關(guān)注

    關(guān)注

    4

    文章

    240

    瀏覽量

    26745
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    嵌入式機(jī)器學(xué)習(xí)的應(yīng)用特性與軟件開(kāi)發(fā)環(huán)境

    設(shè)備和智能傳感器)上,這些設(shè)備通常具有有限的計(jì)算能力、存儲(chǔ)空間和功耗。本文將您介紹嵌入式機(jī)器學(xué)習(xí)的應(yīng)用特性,以及常見(jiàn)的機(jī)器學(xué)習(xí)開(kāi)發(fā)軟件與開(kāi)發(fā)環(huán)境。 嵌入式機(jī)器學(xué)習(xí)的應(yīng)用特性與優(yōu)勢(shì) 由于嵌入式
    的頭像 發(fā)表于 01-25 17:05 ?180次閱讀
    <b class='flag-5'>嵌入式</b>機(jī)器學(xué)習(xí)的應(yīng)用特性與<b class='flag-5'>軟件</b>開(kāi)發(fā)環(huán)境

    哪些專(zhuān)業(yè)適合學(xué)習(xí)嵌入式開(kāi)發(fā)?

    網(wǎng)絡(luò)協(xié)議與標(biāo)準(zhǔn),包括MQTT、CoAP以及HTTP等,適合物聯(lián)網(wǎng)領(lǐng)域的數(shù)據(jù)交換和通信。 5)物聯(lián)網(wǎng)工程:直接關(guān)聯(lián)物聯(lián)網(wǎng)領(lǐng)域,涉及嵌入式系統(tǒng)、網(wǎng)絡(luò)通信、數(shù)據(jù)處理與分析等,適合物聯(lián)網(wǎng)領(lǐng)域。 6)機(jī)械專(zhuān)業(yè):機(jī)械專(zhuān)業(yè)的學(xué)生可以通過(guò)學(xué)習(xí)嵌入式軟件
    發(fā)表于 01-03 13:44

    嵌入式系統(tǒng)開(kāi)發(fā)與硬件的關(guān)系 嵌入式系統(tǒng)開(kāi)發(fā)常見(jiàn)問(wèn)題解決

    嵌入式系統(tǒng)開(kāi)發(fā)與硬件的關(guān)系 嵌入式系統(tǒng)是專(zhuān)為特定應(yīng)用設(shè)計(jì)的計(jì)算機(jī)系統(tǒng),它們通常嵌入在所控制的設(shè)備中。這些系統(tǒng)的關(guān)鍵特點(diǎn)是它們與硬件的緊密集成,這意味著軟件必須為特定的硬件平臺(tái)量身定制。
    的頭像 發(fā)表于 12-09 09:38 ?442次閱讀

    嵌入式條碼掃描器的幾種掃描模式

    嵌入式條碼掃描器的掃描模式是指其在識(shí)別條碼時(shí)的工作模式,這些模式會(huì)影響到掃描器的使用效果和適用場(chǎng)景。以下是幾種常見(jiàn)的嵌入式條碼掃描器的掃描
    的頭像 發(fā)表于 11-19 16:27 ?252次閱讀
    <b class='flag-5'>嵌入式</b>條碼掃描器的幾種掃描<b class='flag-5'>模式</b>

    一文了解嵌入式軟件開(kāi)發(fā)的對(duì)象

    以前應(yīng)用場(chǎng)景很單一,嵌入式開(kāi)發(fā)可能談不上面向?qū)ο箝_(kāi)發(fā)。但現(xiàn)在,做嵌入式開(kāi)發(fā),沒(méi)有面向?qū)ο箝_(kāi)發(fā),你就有點(diǎn)落伍了。 本文結(jié)合個(gè)人經(jīng)驗(yàn)和周立功《抽象接口技術(shù)和組件開(kāi)發(fā)規(guī)范及其思想》,循序漸進(jìn)的用代碼范例說(shuō)明嵌入式
    的頭像 發(fā)表于 11-15 10:31 ?442次閱讀
    一文了解<b class='flag-5'>嵌入式</b><b class='flag-5'>軟件</b>開(kāi)發(fā)的對(duì)象

    嵌入式學(xué)習(xí)建議

    對(duì)廣大渴望學(xué)習(xí)嵌入式系統(tǒng)的學(xué)子提出幾點(diǎn)基礎(chǔ)階段的學(xué)習(xí)建議: ①嵌入式系統(tǒng)軟件硬件密切相關(guān),一定要打好軟硬件基礎(chǔ)。其實(shí),只要找到正確的方法,加上努力,任何理工科學(xué)生,甚至非理工科學(xué)生,都能學(xué)好
    發(fā)表于 10-22 11:41

    什么是嵌入式?一文讀懂嵌入式主板

    在現(xiàn)代科技浪潮中,嵌入式技術(shù)已成為支撐各種智能設(shè)備和系統(tǒng)運(yùn)行的核心力量。那么,究竟什么是嵌入式?嵌入式系統(tǒng),顧名思義,是將計(jì)算機(jī)的硬件和軟件嵌入
    的頭像 發(fā)表于 10-16 10:14 ?1617次閱讀

    嵌入式主板是什么意思?嵌入式主板全面解析

    嵌入式主板,通常被稱(chēng)為嵌入式系統(tǒng)的核心組件,是一種用于控制和數(shù)據(jù)處理的計(jì)算機(jī)硬件,其設(shè)計(jì)旨在嵌入特定設(shè)備中執(zhí)行專(zhuān)門(mén)任務(wù)。嵌入式主板如同是設(shè)備的“大腦”,主要功能是根據(jù)需要管理和控制設(shè)備
    的頭像 發(fā)表于 09-30 10:05 ?1013次閱讀

    EsDA,一站嵌入式軟件

    ,旨在提高嵌入式軟件開(kāi)發(fā)的效率、性能和可擴(kuò)展性。EsDA全稱(chēng)是嵌入式系統(tǒng)設(shè)計(jì)自動(dòng)化,它是一個(gè)由AWorksLP、AWStudio、AXPI、AWTK、ZWS等多種軟件
    的頭像 發(fā)表于 09-15 08:10 ?366次閱讀
    EsDA,一站<b class='flag-5'>式</b><b class='flag-5'>嵌入式</b><b class='flag-5'>軟件</b>

    嵌入式系統(tǒng)中的實(shí)時(shí)操作系統(tǒng)

    嵌入式RTOS是嵌入式應(yīng)用程序運(yùn)行、相互交互和與外界通信的底層軟件機(jī)制。在本節(jié)中,您將了解嵌入式軟件開(kāi)發(fā)人員使用哪些流行RTOS以及它們運(yùn)行
    的頭像 發(fā)表于 08-20 11:28 ?555次閱讀

    嵌入式軟件開(kāi)發(fā)與AI整合

    嵌入式軟件開(kāi)發(fā)與AI整合是當(dāng)前技術(shù)發(fā)展的重要趨勢(shì)之一。隨著人工智能技術(shù)的快速發(fā)展,嵌入式系統(tǒng)越來(lái)越多地集成了AI算法,以實(shí)現(xiàn)更復(fù)雜的智能功能。以下是關(guān)于嵌入式
    的頭像 發(fā)表于 07-31 09:25 ?845次閱讀
    <b class='flag-5'>嵌入式</b><b class='flag-5'>軟件</b>開(kāi)發(fā)與AI整合

    嵌入式系統(tǒng)怎么學(xué)?

    系統(tǒng)設(shè)計(jì)與調(diào)試:需要掌握嵌入式系統(tǒng)的設(shè)計(jì)方法和調(diào)試技術(shù),包括硬件設(shè)計(jì)、軟件設(shè)計(jì)、電路調(diào)試等,以確保系統(tǒng)的穩(wěn)定性和可靠性。 隨著技術(shù)的不斷進(jìn)步和應(yīng)用場(chǎng)景的不斷拓展,嵌入式系統(tǒng)將繼續(xù)發(fā)揮重要作用,推動(dòng)著
    發(fā)表于 07-02 10:10

    嵌入式軟件工程師如何提升自己?

    嵌入式軟件工程師如何提升自己? 作為一名嵌入式軟件工程師,在這個(gè)充滿機(jī)遇和挑戰(zhàn)的領(lǐng)域里,如何提升自己顯得非常重要,它決定了你未來(lái)的發(fā)展方向和成就。接下來(lái),我們一起探討一下。 1.奠定扎
    發(fā)表于 06-12 11:20

    嵌入式軟件設(shè)計(jì)的原則分享

    嵌入式軟件開(kāi)發(fā)如果具有更好的閱讀性、擴(kuò)展性以及維護(hù)性,就需要考慮很多因素。今天給大家分享幾個(gè)嵌入式軟件設(shè)計(jì)的原則。
    發(fā)表于 02-25 10:54 ?755次閱讀
    <b class='flag-5'>嵌入式</b><b class='flag-5'>軟件設(shè)計(jì)</b>的原則分享

    嵌入式軟件開(kāi)發(fā)應(yīng)該掌握哪些知識(shí)?

    嵌入式軟件開(kāi)發(fā)應(yīng)該掌握哪些知識(shí)? 一、 什么是嵌入式軟件? 嵌入式軟件通常是指
    發(fā)表于 02-19 11:23