![](https://img-blog.csdnimg.cn/20190918140012416.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
设计模式
文章平均质量分 78
学习记录
古路
这个作者很懒,什么都没留下…
展开
-
生产者消费者模式
假设有两个进程(或线程)A、B和一个固定大小的缓冲区,A进程生产数据放入缓冲区,B进程从缓冲区中取出数据进行计算,这就是一个简单的生产者-消费者模型。这里的A进程相当于生产者,B进程相当于消费者。生产者/消费者模式是一种常见的并发编程模式,其中生产者线程生成数据并将其放入缓冲区,而消费者线程从缓冲区中取出数据进行处理。这种模式通过缓冲区解耦了生产者和消费者的速度差异。原创 2024-06-02 10:36:21 · 837 阅读 · 0 评论 -
Rviz 复选框插件
我想做的插件是类似于 pangolin 侧面的复选框,动态传递 bool 值给程序内部使用。查了一下只能是通过插件的方式进行实现。但是Display 的参数在编译阶段就写死了,我想要在运行期给定参数然后给插件设置 bool 的数量。原本想通过获取插件指针然后由客户端延迟给定参数,但rviz是 launch 文件直接启动的没有引入代码,插件的实例化是 Rviz 中点击 Add 的过程进行的。最终方案,使用 topic 进行通信,将需要设置的参数进行传进去,然后将交互的数据同样通过topic传出来。原创 2024-05-28 17:06:40 · 378 阅读 · 0 评论 -
C++回调函数理解
看了一些介绍感觉太官方了,我的简单理解就是从模式设计思想出发,回调函数的目的就是为了将变化的模块抽离出来,延迟实现;这里还有一种方法可以避免这样的问题,可以把非static的回调函数 包装为另一个static函数,这种方式也是一种应用比较广的方法。但这种实现有一个很明显的缺点:static 函数不能访问非static 成员变量或函数,会严重限制回调函数可以实现的功能。简而言之,std::funtion是定义函数类型(输入、输出),std::bind是绑定特定的函数(具体的要调用的函数)。原创 2023-05-27 00:01:39 · 1095 阅读 · 0 评论 -
带参数的反射工厂模式
普通的反射工厂模式无法传入参数,工厂为单例模式。原创 2022-12-11 02:32:49 · 154 阅读 · 0 评论 -
工厂模式学习
在这个示例中,我们定义了一个抽象类 Product,表示产品的基类,它定义了一个抽象函数 use,用于表示产品的使用方法。在这个示例中,我们定义了一个基类 Base,并定义了两个子类 A 和 B,它们都实现了 print 方法。在这个示例中,我们使用了 C++ 中的反射机制,即在运行时通过类名来查找并调用相应的创建函数,从而实现了动态创建对象的功能。接下来,我们定义了一个工厂类 Factory,它提供了一个静态成员函数 createProduct,用于根据产品名称返回相应的产品对象。承接上一篇我的需求。原创 2022-12-10 02:36:22 · 184 阅读 · 0 评论 -
策略模式学习
最近想整理一下代码。我的想法是使用继承的方案,使用多态写一个interface,然后不同的方法来继承它。最近ChatGPT比较火,顺便问了一下它:它推荐的是策略模式,我也觉得很适合我的使用场景,因此在此处记录一下它的回答,并未整理,以作后续参考。这个问题的答案取决于您的具体要求。但是,如果您想要能够随时更改计算平均值的方法,那么您可以使用策略模式来设计您的代码。策略模式允许将算法封装到独立的类中,并通过组合来使用它们。这使您可以在运行时更改算法,而无需修改原始代码。例如,您可以在您的代码中定义一个名为 的原创 2022-12-08 12:41:59 · 488 阅读 · 0 评论 -
UML类图关系及其对应代码
UML类图关系及其对应代码0.引言1.UML类图关系总览2.依赖关系3.关联关系4.聚合、组合关系——关联关系的两种形式5.继承(泛化)关系6.最后总结0.引言该博客写得非常好,大部分转载自该博客,以防备忘,同时加了点内容并用C++表示了一下,全都是重复造轮子,厚着脸皮标原创吧。ref01.UML中泛化 , 实现 , 关联, 聚合, 组合, 依赖ref02.UML类图符号 各种关系说明以及举例1.UML类图关系总览文字解释下各个类及关系类含义及关系Food类食物类原创 2021-10-15 21:22:01 · 4236 阅读 · 1 评论 -
面向对象设计原则
设计原则0.引言1.设计原则1.1.依赖倒置原则( DIP)1.2.开放封闭原则( OCP)1.3.单一职责原则( SRP)1.4.Liskov 替换原则( LSP)1.5.接口隔离原则( ISP)1.6.优先使用对象组合,而不是类继承1.7.封装变化点1.8.针对接口编程,而不是针对实现编程2. 设计原则要求3.将设计原则提升为设计经验0.引言文章是重复造轮子,记笔记给自己看,勿喷。ref01.六大设计原则超详细介绍ref02.设计模式与设计原则简介ref03.设计原则总结重新认识面向对象原创 2021-10-15 19:50:14 · 258 阅读 · 0 评论