![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
Hongggggggg
嵌入式ICU
展开
-
设计模式总汇(C语言)
设计模式总汇,C语言版本原创 2021-12-28 10:10:02 · 927 阅读 · 1 评论 -
设计模式之观察者模式(C语言)
介绍:观察者模式是一种行为设计模式, 允许你定义一种订阅机制, 可在对象事件发生时通知多个 “观察” 该对象的其他对象。问题: 假如顾客对某个特定的产品非常感兴趣 , 而该产品很快将会在商店里出售。顾客可以每天来商店看看产品是否到货。但如果商品尚未到货时,顾客就会空手而归。另一方面,每次新产品到货时,商店可以向顾客发送邮件。这样,顾客就无需反复前往商店了,但这样同时也可能会惹恼对新产品没有兴趣的其他顾客。 所以我们似乎遇到了一个矛盾:要么让顾客浪费时间检查产品是否到货, 要么让商店浪费资源去通原创 2022-01-09 10:00:00 · 469 阅读 · 0 评论 -
设计模式之状态模式(C语言)
介绍: 状态模式是一种行为模式,它与有限状态机的概念紧密相关;其主要思想是程序在任意时刻仅可处于几种有限的状态中。在任何一个特定状态中,程序的行为都不相同,且可瞬间从一个状态切换到另一个状态。不过,根据当前状态,程序可能会切换到另外一种状态,也可能会保持当前状态不变。这些数量有限且预先定义的状态切换规则被称为转移。作用:将业务模型抽象成一个有限状态机,减少大量的switch-case和if-else的使用,使得代码逻辑清晰,结构规整;类比: 智能手机的按键和开关会根据设备当前状态完成原创 2022-01-08 10:00:00 · 734 阅读 · 1 评论 -
设计模式之命令模式(C语言)
介绍: 命令模式是一种行为模式,它可以使代码解耦,便于维护;假设我们现在要设计一个命令解析的模块:传统方式:void func1(void){ printf("func1\r\n");}void func2(void){ printf("func2\r\n");}void func3(void){ printf("func3\r\n");}void prase_cmd(char cmd){ switch(cmd) {原创 2022-01-06 11:23:57 · 403 阅读 · 0 评论 -
设计模式之责任链模式(C语言)
介绍: 责任链模式是一种行为模式,它可以允许你将请求沿着处理者链进行发送,收到请求以后, 每个处理者均可对请求进行处理, 或将其传递给链上的下个处理者;作用:将请求按照链的方式一一传递类比: 公司申请报销,首先要leader审批通过,然后是HR,再然后是财务,最后是老板,一级一级的将请求传递;示例:#include <stdio.h>#include <assert.h>#include "list.h"static LIST_HEAD(cha原创 2022-01-05 12:20:29 · 704 阅读 · 1 评论 -
设计模式之单例模式(C语言)
介绍: 单例模式是一种创建型设计模式,又称为单件模式,是最简单的设计模式之一;作用:保证一个类永远都只有一个实例;如果你已经创建了一个实例, 过一会儿还想再创建一个新的实例, 此时获得到的实例是之前已创建的实例, 而不是一个新的实例;提供一个访问该实例的全局接口;解决问题:控制实例数量;避免全局使用的实例频繁创建与销毁;类比: 地球只有一个,无论在什么场景下,我们口中所说的地球都是同一个地球;代码示例:/*共享资源大小*/#define SHARED_MEM_SI原创 2021-12-02 09:30:00 · 410 阅读 · 0 评论 -
设计模式之工厂模式(C语言)
介绍: 工厂模式是一种创建型设计模式;作用: 隐蔽具体的生产逻辑,根据不同的要求生产出不同的产品,就像switch-case一样;类比: 一个衣服工厂可以根据不同的诉求生产出不同面料的衣服;代码示例:typedef enum{ COTTON, LEATHER, FABRIC_MAX,}typedef struct _Clothing{ int fabric; /*面料*/ void (*generate_clothing)(void原创 2021-12-09 09:30:00 · 510 阅读 · 0 评论 -
设计模式之抽象工厂模式(C语言)
介绍: 抽象工厂模式是一种创建型设计模式;作用: 提供统一的接口让用户根据不同的需求创建出不同的工厂;类比: 一个制造家具的工厂,可以根据用户不同的诉求,制造出不同风格的家具;代码示例:首先定义出不同类型的家具以供生产:void modern_chair(void){ printf("A modern chair\r\n");}void modern_dest(void){ printf("A modern desk\r\n");}void victor原创 2021-12-23 10:02:35 · 822 阅读 · 0 评论 -
设计模式之原型模式(C语言)
介绍: 原型模式是一种创建型设计模式,使你可以通过复制原型来创建一个一模一样的新的对象,无需考虑创建过程,数据类型等内容;作用:创建一个与原型一模一样的对象;解决问题:即使原型的状态有所改变,也可以创建出与其当前状态一致的对象省去了创建对象的复杂操作,不必关注创建对象的具体过程类比: 老师打印试卷,拿着原版试卷,可以复制出任意数量的试卷,原版试卷既为原型;代码示例:#include <stdio.h>#include <string.h>#原创 2021-12-24 18:57:25 · 664 阅读 · 0 评论 -
设计模式之建造者模式(C语言)
介绍: 建造者模式是一种创建型设计模式,亦称创建者模式、生成器模式等;该模式是将一个复杂的对象分解为许多简单的对象,然后逐步构建出想要的产品,产品的最终形态都是一致的,但是具体组成的每个对象可能是不相同的;优点:将复杂对象的构建与表示分离;只需要选择具体的组成对象即可创建出复杂的对象,无需知道建造细节;类比: 一个台式机是由CPU、显卡、内存、硬盘等部件组成,我们可以根据自己的需求选择不同型号不同厂商的部件,比如说CPU选择Intel或者AMD的;在这里一个台式机就是由需多部件组成,原创 2021-12-27 16:07:40 · 817 阅读 · 0 评论