随笔分类 - 设计模式
摘要:一.preface 最近接触QPC框架,里面用到了使用UML来描绘状态图的转换。 二.how to use the "UML" 1.在线绘制UML网站 https://excalidraw.com/ 2.参考模板 这里给出的模板有两个状态和初始化,在QPC框架里就分别对应三个函数(函数的返回值是状态
阅读全文
摘要:一.preface 近期学习QPC框架,其核心之一就是 actvie-object,活动对象的出现是为了解决并发(阻塞、数据竞争)问题,笔者这里做一篇笔记,方便日后回顾。 二.What is "active object" QP/C框架:活动对象基础框架+活动对象应用程序,让每一个线程函数都作为一个
阅读全文
摘要:Ⅰ.preface 事件驱动编程笔者已在很多地方都有接触,包括lvgl(event)、QT(signal & slot)、QPC框架等,事件驱动编程非常适合在GUI应用。 Ⅱ.What is "event-driven programming" 1.程序结构 可以响应多种可能发生的事件 任何一种事件
阅读全文
摘要:一.前言 用好设计模式,可以提高代码水平,所以把学过C++设计模式的做个总结和分类。 二.七大原则 单一职责原则:一般来说,类和函数的颗粒度越小越好。一个函数只有一项功能,一个类只负责一项功能。 开闭原则:对拓展开放、对修改关闭。 依赖倒置原则:高层模块不应该依赖底层模块,应该通过抽象(中间层)来依
阅读全文
摘要:1.工厂模式介绍 * 使用工厂模式时,在创建对象的过程中,不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。 2.工厂模式优点 * 使用者在创建对象时,只需要知道该对象的名称即可。 * 代码扩展性强,如果想要增加一个新产品,只需要再增加一个类即可,使代码得到解耦。 3.工厂模
阅读全文
摘要:参考代码一 点击查看代码 #include <stdio.h> #define MAX_OBSERVERS 10 typedef struct Observer{ int Oberver_value; void (*update)(struct Observer *observer, int val
阅读全文
摘要:1.假设我们需要实现一个排序程序,可以对一个整型数组进行排序。我们需要使用策略模式来封装不同的排序算法,例如冒泡排序、插入排序和快速排序。 2.Code 点击查看代码 ``` #include #include #include #include // 策略接口 typedef void (*Str
阅读全文
摘要:状态机简介 状态机的3个要素:状态、事件、响应。转换成具体的行为就 3 句话。 发生了什么事? 现在系统处在什么状态? 在这样的状态下发生了这样的事,系统要干什么? Example 1.假设我们的交通信号灯控制器有以下三个状态:绿灯状态、黄灯状态和红灯状态。在绿灯状态下,我们可以选择进入黄灯状态或红
阅读全文