设计模式
文章平均质量分 77
设计模式
王燕龙hope
linux 学习者
展开
-
[c++] 单例模式 + cyberrt TimingWheel 单例分析
单例模式要求一个类在一个进程中只能创建一个对象。比如 cyberrt 中的 TimingWheel 类就是单例模式,这个类管理着一个进程内的所有定时器,只需要一个对象就可以。单例模式的实现有两种方式,懒汉式和饿汉式。懒汉式,当第一次使用的时候才会真正创建这个对象;饿汉式,不管会不会用到这个对象,在进程启动的时候都会创建这个对象,如果一直不使用,那么就会造成资源浪费。饿汉式的缺点是可能造成资源浪费,但是对性能友好,因为在进程启动的时候就直接创建了,需要使用的时候可以直接拿来使用;懒汉式反之。原创 2024-02-24 15:46:57 · 761 阅读 · 0 评论 -
[c++] 工厂模式 + cyberrt 组件加载器分析
cyberrt 加载运行组件的时候,首先要加载用户的动态库。动态库的加载通过类 ClassLoader 来完成。(1)动态库加载函数 dlopen()底层动态库的加载是通过函数 dlopen() 完成。dlopen() 可以直接传动态库的名字,比如 libcamera.so,也可以传动态库的路径,比如 /ads/lib/libcamera.so。原创 2024-02-24 21:16:03 · 1136 阅读 · 0 评论 -
[c++] 模板模式 —— 毕业设计论文模板
在上边的例子中,thread_entry() 就是一个模板方法,其中对 init(),should_stop(),do(),prepare_stop() 进行了调用。thread_entry() 的实现是不变的,是一个模板。init(),should_stop(),do(),prepare_stop() 需要派生类来实现,用户不需要关心这几个函数是怎么调用的。其中 init(),should_stop(),do(),prepare_stop() 均声明为纯虚函数,也就是需要子类来实现的函数。原创 2024-03-10 18:36:21 · 368 阅读 · 0 评论 -
[c++] 查表 —— 策略模式和职责链模式的核心
查表法在工厂模式、策略模式以及职责链模式中都有使用。以工厂模式为例,表中存储的数据,key 是商品的类型,value 是生产这个商品的工厂。在生产商品的时候,直接根据商品类型从表中获得商品对应的工厂,然后通过工厂生产商品。如果没有表的话,那么类型判断和工厂实现都在一块,代码耦合度高,通过查表法可以对代码进行解耦。原创 2024-03-10 22:57:04 · 891 阅读 · 0 评论