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

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

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

嵌入式 C 語言設(shè)計模式 --- 代理模式

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


代理模式(Proxy Pattern),是指當客戶端無法訪問某個對象或者訪問某個對象存在困難的時候,可以通過一個代理對象來進行間接訪問。

舉一個生活中的例子,比如,我們在買火車票或者飛機票的時候,有時候不會直接在12306或者航空公司官網(wǎng)上面購買,而是會通過網(wǎng)絡上某些代理(或中介)渠道進行購票,如攜程,同程,飛豬,等等。

這些網(wǎng)絡代理渠道,就相當于一個代理者的角色,幫我們(客戶端)完成了購票這一個動作。

代理模式從結(jié)構(gòu)上來看,跟適配器模式非常相似,這兩種設(shè)計模式都是增加了一個中間層,作為客戶端與真實對象之間的橋梁,但代理模式與適配器模式又有著本質(zhì)上的不同。

通俗來說,代理模式就好比是皇帝讓太監(jiān)代理自己宣讀圣旨,而官員(客戶端)只能通過太監(jiān)(代理角色)知道皇帝的旨意。

適配器模式就好比是皇帝(客戶端)聽不懂外國使者說的外語,只能通過翻譯(適配器)與外國使者進行溝通。


圖片來源:網(wǎng)絡

2 – 什么情況下要用代理模式?

在嵌入式C語言軟件設(shè)計的時候,在某些情況下,客戶端角色不方便直接訪問某個對象的時候,就可以使用代理模式,通過一個代理接口,來間接訪問某個對象。

比如說,在進行網(wǎng)絡(比如藍牙網(wǎng)絡,WiFi網(wǎng)絡,有線網(wǎng)絡,等等)數(shù)據(jù)收發(fā)的時候,就可以通過一個網(wǎng)絡代理接口,代替實際的底層硬件接口,進行網(wǎng)絡數(shù)據(jù)的收發(fā)。

客戶端角色一般不直接調(diào)用網(wǎng)絡接口進行數(shù)據(jù)收發(fā),而是通過網(wǎng)絡代理接口。

因為在某些場合下,比如我們的筆記本電腦,在無線網(wǎng)卡和有線網(wǎng)卡共存的情況下,客戶端應用程序通常只關(guān)心數(shù)據(jù)通過網(wǎng)絡的方式進行發(fā)送,而不關(guān)心具體是用了有線網(wǎng)絡還是無線網(wǎng)絡。

這個時候,為客戶端提供一個網(wǎng)絡數(shù)據(jù)收發(fā)的代理類,就顯得十分重要了。當我們的筆記本電腦切換有線或無線網(wǎng)卡的時候,也不影響客戶端應用程序進行網(wǎng)絡數(shù)據(jù)收發(fā)。


3 – 如何使用代理模式?

以有線網(wǎng)絡(wire_network)和無線網(wǎng)絡(wireless_network)這兩者為例,講述在嵌入式C語言環(huán)境下,如何使用代理模式進行網(wǎng)絡數(shù)據(jù)收發(fā)。

1、先聲明一個網(wǎng)絡代理類接口,這個代理類提供了網(wǎng)絡數(shù)據(jù)收發(fā)的接口,注意,這只是一個接口,實際的網(wǎng)絡數(shù)據(jù)收發(fā)操作,需要給這個代理類接口的函數(shù)指針進行填充賦值。網(wǎng)絡代理類的實現(xiàn)代碼,如下圖所示。
回復

使用道具

發(fā)表回復

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

本版積分規(guī)則


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