C语言设计模式

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

03 状态机模式
状态机模式1
有一个灯,按下开按钮,就会开灯,按下关按钮就会关灯。这就是一个很典型的简单的有限状态机。简单 的描述有2个状态,关灯[STATE_OFF],亮[STATE_LIGHT_ON] 。有两个事件,开和关按钮。这两个事件 促使状态机间的转换。
03 状态机模式
状态机模式2
有一个灯,按下开按钮,就会开灯,按下关按钮就会关灯。和一般等不同的是,两次开之间的灯的明暗不 一样。也就是说,第一次开的时候,是高亮,关灯后,再开是低亮,下次再开是高亮,循环往复。
命令模式的C语言实现也是非常显性的。命令发送方不通过直接调用的方式,而是通过发一个命令 消息给接收方,让接收方执行操作。C语言里采用命令模式的最常见的原因是核间通信,进程间交互。 如果是核间通信,通常是把命令按协定的格式封装在消息数据包里。如果是进程间通信,通常封装成一 个结构体,把参数带过去。命令的通道通常是队列。
07 适配及系列模式-----总结
非常常用的设计模式,使用中都是自然而然的,没有想到其实也是几种退化的面向对象设计模式。
08 建造者模式----介绍
08 建造者模式----总结
对于C语言开发者来说,通常是在构造复杂的数据结构时候会想到建造者模式。比如核间通信消息,进 程间通信消息。ISP里面的request消息,就隐性用了建造者模式。
。。。
.init
..rreeaadd
.writeLeabharlann .init.read
.write
09 外观模式----总结
引入外观模式,是客户对子系统的使用变得简单了,减少了与子系统的关联对象,实现了子系统与客户之间 的松耦合关系。但是,灵活性变差了,客户不能自由选择子系统内部的接口,只能使用封装好的一套接口。
实际生活里,客户并不是需要选子系统内部接口。比如DIY电脑就相当于普通的模式,消费者会买cpu,主板 等各个组件。而品牌PC就类似于门面模式,只能购买特定个型号。对于手机就更不用说了,没有消费者能买 soc,flash来装手机。
10 访问者模式----介绍
访问者模式,听上去复杂一些。但是,这种模式用简单的一句话说,就是不同的人对不同的事物有不同 的感觉。比如说吧,豆腐可以做成麻辣豆腐,也可以做成臭豆腐。可是,不同的地方的人未必都喜欢这 两种豆腐。四川的朋友可能更喜欢辣豆腐,江浙的人就可能对臭豆腐更喜欢一些。那么,这种情况应该 怎么用设计模式表达呢?
04 责任链模式-----模式介绍
04 责任链模式----代码实现
04 责任链模式----总结
1. 责任链模式在内核的实现很普遍,实现代码典型而简单,都是先定义各异handler的链表节点,包含list 结构体,优先级,回调处理函数3个要素即可。更复杂的责任链模式实现只不过多条链,但是单个链的属 性是没有改变的。 2.每个handler的处理结果根据需要定义,总体上讲都是继续和不继续两种。
06 命令模式-----模式介绍
模式介绍:命令模式(command) 命令模式的解释如下:
向对象发送一个请求,但是并不知道该请求的具体接收者是谁,具体的处理过程是如何的,只知道 在程序运行中指定具体的请求接收者即可,对于这样将请求封装成对象的我们称之为命令模式。所以命 令模式将请求封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。同时命令模式支 持 可撤销的操作。
c语言设计模式
01
软件编写模式
01 软件编写模式
软件编写模式是开发过程中的重要经验总结。灵活运用设计模式,一方面利于我们编写高质量的代码, 另一方面也方便我们对代码进行维护。
02
主要设计模式
02 主要设计模式
状态机模式 责任链模式 观察者模式 适配系列模式 建造者模式 外观模式 访问者模式 非典型模式
10 访问者模式----介绍
访问者模式,听上去复杂一些。但是,这种模式用简单的一句话说,就是不同的人对不同的事物有不同 的感觉。比如说吧,豆腐可以做成麻辣豆腐,也可以做成臭豆腐。可是,不同的地方的人未必都喜欢这 两种豆腐。四川的朋友可能更喜欢辣豆腐,江浙的人就可能对臭豆腐更喜欢一些。那么,这种情况应该 怎么用设计模式表达呢?
03 状态机模式----总结
1. 项目开发里最常见的使用为普通状态机,网络协议使用的复杂状态机也是在普通状态机上添加一些特 性而来,基本特征是非常类似的。
2.C语言实现状态机的模式是非常固定的。状态转移表和核心的状态转移函数是核心。普通状态机的几个 要素,不管在初始设计中有没有使用到,建议都写上。
06 命令模式-----模式框图
06 命令模式-----总结
命令模式也是C语言实现的显性的设计模式,角色分为发布命令的invoker,分派命令的receiver和实际执 行命令的handler。命令队列和命令码数组是核心的辅助元素。命令码数组目前只有两种类型。命令队列 的实现类型就非常多,甚至未必是队列形式,需要设计人员根据经验把握。
05 观察者模式-----模式介绍
好比去餐馆吃饭,叫号。对号入座。
05 观察者模式-----代码实现
05 观察者模式-----总结
总体用法和责任链模式类似,而在内核里实现的观察者模式其实并没有那么“纯粹”,而是扩展了优先 级特性和可停止特性。这个破坏了Observer之间的独立性,因为原则上,一个Observer是否注册和执行 不应该影响其他的Observer,内核的扩展这就使观察者模式变成了责任链模式模式。
09 外观模式----介绍
外观模式也叫门面模式 外观模式就是提供一个统一的接口,用来访问子系统中的一群接口。外观模式定义了一个高层接口, 让子系统更容易使用。如下图,是使用外观模式后将子系统的使用变得更加简单。
09 外观模式----代码实现
file_operateion
spi_flash
eeprom
自行编写伪数据包发送代码也非常适合用建造者模式。把数据包的不同层的头部信息用不同的函数进 行构造。
08 建造者模式----总结
对于C语言开发者来说,通常是在构造复杂的数据结构时候会想到建造者模式。比如核间通信消息,进 程间通信消息。ISP里面的request消息,就隐性用了建造者模式。
自行编写伪数据包发送代码也非常适合用建造者模式。把数据包的不同层的头部信息用不同的函数进 行构造。
10 访问者模式----代码实现
11 访问者模式----代码实现
THANK
相关文档
最新文档