电子产业一站式赋能平台

PCB联盟网

搜索
查看: 303|回复: 0
收起左侧

嵌入式 C 语言设计模式 --- 代理模式

[复制链接]
匿名  发表于 2023-2-10 17:50:00 |阅读模式
我是老温,一名热爱学习的嵌入式工程师
关注我,一起变得更加优秀!
1
- 什么是代理模式?


代理模式(Proxy Pattern),是指当客户端无法访问某个对象或者访问某个对象存在困难的时候,可以通过一个代理对象来进行间接访问。

举一个生活中的例子,比如,我们在买火车票或者飞机票的时候,有时候不会直接在12306或者航空公司官网上面购买,而是会通过网络上某些代理(或中介)渠道进行购票,如携程,同程,飞猪,等等。

这些网络代理渠道,就相当于一个代理者的角色,帮我们(客户端)完成了购票这一个动作。

代理模式从结构上来看,跟适配器模式非常相似,这两种设计模式都是增加了一个中间层,作为客户端与真实对象之间的桥梁,但代理模式与适配器模式又有着本质上的不同。

通俗来说,代理模式就好比是皇帝让太监代理自己宣读圣旨,而官员(客户端)只能通过太监(代理角色)知道皇帝的旨意。

适配器模式就好比是皇帝(客户端)听不懂外国使者说的外语,只能通过翻译(适配器)与外国使者进行沟通。

jb4sopjiv4q64014572719.jpg

jb4sopjiv4q64014572719.jpg


图片来源:网络

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

在嵌入式C语言软件设计的时候,在某些情况下,客户端角色不方便直接访问某个对象的时候,就可以使用代理模式,通过一个代理接口,来间接访问某个对象。

比如说,在进行网络(比如蓝牙网络,WiFi网络,有线网络,等等)数据收发的时候,就可以通过一个网络代理接口,代替实际的底层硬件接口,进行网络数据的收发。

客户端角色一般不直接调用网络接口进行数据收发,而是通过网络代理接口。

因为在某些场合下,比如我们的笔记本电脑,在无线网卡和有线网卡共存的情况下,客户端应用程序通常只关心数据通过网络的方式进行发送,而不关心具体是用了有线网络还是无线网络。

这个时候,为客户端提供一个网络数据收发的代理类,就显得十分重要了。当我们的笔记本电脑切换有线或无线网卡的时候,也不影响客户端应用程序进行网络数据收发。

5kvd4x2cwwu64014572820.jpg

5kvd4x2cwwu64014572820.jpg


3 – 如何使用代理模式?

以有线网络(wire_network)和无线网络(wireless_network)这两者为例,讲述在嵌入式C语言环境下,如何使用代理模式进行网络数据收发。

1、先声明一个网络代理类接口,这个代理类提供了网络数据收发的接口,注意,这只是一个接口,实际的网络数据收发操作,需要给这个代理类接口的函数指针进行填充赋值。网络代理类的实现代码,如下图所示。
回复

使用道具

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


联系客服 关注微信 下载APP 返回顶部 返回列表