電子產(chǎn)業(yè)一站式賦能平臺

PCB聯(lián)盟網(wǎng)

搜索
查看: 49|回復(fù): 0
收起左側(cè)

嵌入式 C 語言設(shè)計模式 --- 裝飾器模式

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
匿名  發(fā)表于 2023-2-2 17:50:00 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
我是老溫,一名熱愛學(xué)習(xí)的嵌入式工程師
關(guān)注我,一起變得更加優(yōu)秀!
1 - 什么是裝飾器模式?

裝飾器模式(Decorator Pattern),是結(jié)構(gòu)型設(shè)計模式的一種,裝飾器模式允許向一個現(xiàn)有的對象添加新的功能,而又不改變其對象結(jié)構(gòu),這種方式比使用子類繼承的方式更加靈活。

裝飾,顧名思義,就是在原有事物的基礎(chǔ)上,錦上添花地新增某些點綴或功能,但事物原有的功能依舊繼續(xù)保留。

通俗來說,就是有一位女生,她在素顏的時候已經(jīng)很美很漂亮了,但她為了更美,選擇了利用化妝技術(shù),讓自己的美貌達到驚為天人的效果。“化妝”這一個過程,就是一個裝飾的過程。

裝飾器模式的優(yōu)勢就是,不用在原有功能的基礎(chǔ)上進行修改,只需要對原有功能進行一次封裝操作,就可以達到新增其他功能的目的。


2 – 什么情況下要用裝飾器模式?

在嵌入式C語言軟件設(shè)計的時候,當我們在進行某一種操作之前,需要在原有操作的基礎(chǔ)上,再進行多一步操作,這種情況下,就需要用到裝飾器模式。

有很多設(shè)計場景可以使用裝飾器模式。

比如,我們在進行數(shù)據(jù)傳輸?shù)臅r候,需要根據(jù)通信協(xié)議對數(shù)據(jù)進行封裝,那么,通信協(xié)議相關(guān)的函數(shù)就是一個裝飾器。

再比如,我們在配置MCU某些設(shè)備參數(shù)的時候,需要在配置前把參數(shù)保留到存儲器,這個“保留到存儲器”的相關(guān)函數(shù),就是一個裝飾器。

再比如,我們在使用系統(tǒng)提供的信息打印函數(shù)時,需要提前把日期和時間都打印出來,這個提前打印出日期和時間,就是一個裝飾器。



3 – 如何使用裝飾器模式?

舉一個嵌入式軟件比較常見的設(shè)計場景,串口參數(shù)配置。在以往的設(shè)計中,我們通常會調(diào)用一個函數(shù),對MCU串口的通信參數(shù)(比如波特率,校驗位,停止位,數(shù)據(jù)位,等等)進行配置。

現(xiàn)在,我們在這個配置動作的基礎(chǔ)上,增加一個參數(shù)保存的動作,但又不想改變原來的配置函數(shù),接下來,看一下具體的實現(xiàn)過程。

1、先構(gòu)建一個串口設(shè)備相關(guān)類,這個類包含了一些串口的基本通信參數(shù),以及提供了一個配置串口參數(shù)的方法,具體的代碼實現(xiàn)如下圖所示。
回復(fù)

使用道具

發(fā)表回復(fù)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則


聯(lián)系客服 關(guān)注微信 下載APP 返回頂部 返回列表