![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
shu_chang1993
这个作者很懒,什么都没留下…
展开
-
C++设计模式之代理模式
C++设计模式之代理模式什么是代理模式**代理模式(Proxy)原创 2019-06-13 23:48:44 · 140 阅读 · 0 评论 -
redis双向链表源码解析(adlist.h/adlist.c)
redis双向链表源码解析(adlist.h/adlist.c)数据结构listNode是一个双向链表节点结构,每个节点存的数据用void*指向。listIter是一个双向链表迭代器,其中direction用来判断迭代方向list表示双向链表结构,保存着头节点,尾节点,提供三个函数指针, 供用户传入自定义函数, 用于复制(dup)、释放(free)和匹配(match)链表中的结点的值(va...原创 2019-06-28 01:04:38 · 374 阅读 · 0 评论 -
redis字符串源码解析(sds.h/sds.c)
redis字符串源码解析(sds.h/sds.c)字符串的定义首先看一下redis字符串结构体/* * 类型别名,用于指向 sdshdr 的 buf 属性 */typedef char *sds;struct sdshdr { // buf 中已占用空间的长度 int len; // buf 中剩余可用空间的长度 int free; /...原创 2019-06-27 00:46:34 · 992 阅读 · 0 评论 -
中介者模式(mediator)(C++)
什么是中介者模式**中介者模式mediator,**用一个中介对象来封装一系列的对象交互,中介者对象使各对象不需要显示的相互引用,从而使其耦合松散,并且可以独立的改变他们之间的交互方式角色角色角色作用抽象中介者包含一个所有col对象,和一个抽象接口具体中介者实现具体接口抽象同事包含中介,以及与中介交互的接口具体同事实现接口#include...原创 2019-06-18 00:48:27 · 202 阅读 · 1 评论 -
外观模式(Facade)之C++
什么是外观模式(facade)为子系统中一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这个系统更加容易使使用。例子举个例子,大家买股票,每支股票可以看成是SubSystem,我们可以同时买多只股票,那么你需要知道多个SubSystem。有些人比较懒,不想关注股票,但是又想赚钱,那就只能买基金了,基金是结合了多只股票,客户只关注这些基金,而不关注股票,所以需要一个基金类f...原创 2019-06-17 22:32:56 · 165 阅读 · 0 评论 -
建造者模式
建造者模式什么是建造者模式建造者模式的定义将一个复杂对象的构建与它的表示分离;复杂对象的建造指的是对象中复杂的接口实现,而表示指的是通过这些实现,可以得到不同的结果,其实多态《大话设计模式》中,例子是,建造小人,一共需建造6个部分,头部、身体、左右手、左右脚。与工厂模式不同,建造者模式是在导向者的控制下一步一步构造产品的。代码实现很简单,如下;角色角色作用角色成员...原创 2019-06-17 22:10:36 · 63 阅读 · 0 评论 -
C++设计模式命令模式(Command)
什么是命令模式命令模式:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或者记录请求日志,以及支持可撤销的操作。命令模式可用来消除程序中的耦合问题。每个“常规”的操作必须周期性地调用一个函数来检查事件的状态,而通过命令模式,这些“常规”操作不需要知道有关它们所检查的事件的任何信息,也就是说它们已经与事件处理代码分离开来。也就是说,客户只用下命令,它不需要知道下令之...原创 2019-06-21 00:02:01 · 504 阅读 · 0 评论 -
状态模式(state)C++实现
状态模式(state)C++实现什么是状态模式状态模式:当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了这个类状态模式的主要解决的是,当控制一个对象状态转换的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类当中,可以把复杂的判断逻辑简化。当然,如果这个状态判断逻辑很简单,就没有必要使用状态模式了这里对于简单逻辑判断和复杂逻辑判断,大家可以自己考虑,...原创 2019-06-17 00:48:34 · 1335 阅读 · 0 评论 -
观察者模式(Observer Pattern)C++
观察者模式(Observer Pattern)什么是观察者模式观察者模式,她定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时, 所有依赖于它的对象都得到通知并被自动更新。观察者模式的角色角色角色作用主要成员抽象主题(Subject)目标知道它的观察者。可以有任意多个观察者观察同一个目标提供注册和删除观察者对象的接口观察者(Observer)观察...原创 2019-06-16 16:57:30 · 152 阅读 · 0 评论 -
C++变参模板类
C++可变参数模板之前学习模板,都是固定参数的模板,前段时间看源码时,注意到了变参模板类,觉得很有意思。什么是可变参模板template<typename... Args> class MoreApply;如上,就是一个可变参模板类的申明。至于Args…中传进来多少参数,由使用者决定。了解变参模板函数的程序员都知道,变参模板作难的是参数展开,变参模板类也不例外,接下来,介绍两...原创 2019-06-11 00:48:32 · 2188 阅读 · 0 评论 -
C++实现备忘录模式(Memento)
什么是备忘录模式在不破坏封装的情况下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以将该对象恢复到原先保存的状态。角色角色角色作用Originator负责创建一个Mementor,用以记录当前时刻它的内部状态,并可使用备忘录恢复内部状态Mementor负责存Originator对象的内部状态,并可防止Originator以外的对象方位备忘录...原创 2019-06-20 00:27:26 · 238 阅读 · 0 评论 -
redis字典(dict.h/dict.c)(一)
redis字典(dict.h/dict.c)(一)redis中的字典目前很多语言中都封装了字典,但是C语言中没有字典,所以redis自己底层实现了字典redis的字典底层是通过hash实现的,使用的是哈希链地址法redis字典的数据结构这里有一个关系redis数据结构有key-dict,就是每个key对应一个dict字典每个字典dict又对应多个keys-values多个ke...原创 2019-06-29 11:13:48 · 789 阅读 · 0 评论