- 博客(34)
- 收藏
- 关注
原创 c++访问者模式
访问者模式是为了给固定接口增加新的接口。访问者模式有一个巨大的缺陷就是需要增加接口的那个类不能再派生新的类。`c++`现在有了仿函数(重载括号)来替换这种模式,更加灵活。
2020-02-11 20:29:43
274
原创 c++责任链模式
责任链模式是有一类对象(继承自`Handler`可以处理另一类对象(继承自`event`),但这些`event`具体由谁来处理需要经过一些具体算法来确定。责任链就是实现了一个链表,现在数据结构很成熟了,这种模式完全可以用list来代替。
2020-02-11 19:13:47
431
3
原创 c++迭代器模式
迭代器只要是为所有的数据接口统一遍历的方式。c++的stl中广泛应用,但是stl的实现方式是使用泛型编程,实现编译时多态,效率更高。其他很多语言应用这种方式还是很多的。下面方式是面向对象的手法实现迭代器模式。
2020-02-11 17:04:39
357
原创 c++组合模式
组合模式主要是将所有类型元素都抽象成组件,有的组件是叶子节点(不能再有字节点),有的节点是分支节点(可以有孩子节点)。这样的递归的数据结构很方便管理。
2020-02-11 15:15:59
180
原创 c++中介者模式
中介者模式:有很多相互依赖的类,将他们的依赖关系集中到中介者中。中介者抽象的是它们之间的依赖关系,这种依赖关系并不会消失,只是集中到了中介者身上。比如:很多同事一起办公,但是工作需要,经常要相互沟通,而我们直接找到对方代价很大,而通过发送微信转达对方是很快的,微信就扮演者中介者。中介者和外观模式,两者相同在于都是很多类相互协作,然而前者强调内部之间的沟通,后者强掉它们与外部沟通。
2020-02-10 13:05:05
409
原创 c++适配器模式
适配器模式是将两个不同的接口,但是功能相似,适配的一种方法。甚至其中目标接口没有实现,实现类没有接口都是可以的。适配器模式主要强调的是接口和实现不统一,需要将两者兼容的类。
2020-02-09 22:05:23
184
原创 c++代理模式
代理模式,可以为原有的某个类新增一些必要的功能(不同与装饰模式,装饰模式所装饰的东西是可有可无的)。代理模式强调将一个类进化成另一个类,且保留原有类。广泛应用于分布式开发中,将本地系统进化成服务器系统供客户端使用。其中的代码相当之复杂,可能会有一些代码生成器自动生成c++代码。
2020-02-09 21:26:46
175
原创 c++建造者模式
建造者模式用来构建复杂对象的设计模式,指挥者用来提供构造方法,建造者用来提供材料,对象建立时只是一个空架子,也可以用`set`方法来自定义构造。
2020-02-09 17:19:45
360
原创 c++抽象工厂方法
本文通过运用设计模式比没用设计模式的优势在哪?设计模式主要是要抓住稳定部分和易变部分,文章结尾会指出。数据库操作为例,以下是原有老代码#include <iostream>using namespace std;//数据库连接抽象类class IDbConnect {public: virtual void connect() = 0; virtual ...
2020-02-09 11:38:39
250
原创 c++工厂方法
本文通过运用设计模式比没用设计模式的优势在哪? 设计模式主要是要抓住稳定部分和易变部分,文章结尾会指出。还指出工厂方法被设计出来,最开始想要解决的问题是什么。
2020-02-08 22:11:51
278
原创 c语言单元测试,如何伪装(mock)函数调用
本文适合对c语言有一定基础,喜欢单元测试的小伙伴们阅读。本文代码主要实现了c语言单测时mock方法。
2020-02-07 14:16:14
2900
原创 vim的配置文件
map <F9> :call SaveInputData()<CR>func! SaveInputData() exec "tabnew" exec 'normal "+gP' exec "w! /tmp/input_data"endfunc"colorscheme torte"colorscheme murphy"colorscheme deser...
2020-02-06 22:00:55
234
原创 如何生成core dump文件
步骤一:设置core文件生成权限编辑/etc/profile文件,在其中加入或修改ulimit -S -c unlimited > /dev/null2>&1。执行source /etc/profile使刚刚编辑的文件生效。ulimit -c 查看内容(显示unlimited为修改成功)。步骤二:设置core文件生成路径编辑/etc/sysctl.conf文...
2020-02-06 21:50:39
1017
原创 c++工厂模式与new的区别
简单工厂模式是最简单且最常用的工厂模式。本文主要讲解工厂模式比new方法的优势。为什么要用工厂模式来替代new?简单的工厂模式相对于new方法有三个核心的好处:1 可以让产品类统一化入参。#include <iostream>#include <string>using namespace std;class AbstractProduct {public...
2020-02-05 17:53:20
791
原创 c++单例模式模板
所有单例模类直接继承此模板即可,线程安全,效率高(无所),延时构造。#include <iostream>using namespace std;template <typename T>class Singleton {public: //外部获取单例的接口 static T& getInstance() { stati...
2020-02-05 14:46:57
2279
原创 git基本命令的理解
本文适合git命令初学者和对git不是很熟悉的读者阅读。本文包括git各种基本概念的讲解,git常见流程,异常流程,回溯方法,冲突处理的方法。
2020-02-02 17:40:21
441
原创 正则表达式的理解
本文适合初学者,和没有系统学习正则表达式的人阅读,帮助您解决绝大部分正则表达式是的问题。包括名词和量词的方法轻松理解的方法;获取匹配和非获取匹配的区别;匹配结果存储的方式;前缀后缀匹配;正则表达式中或和与操作等。
2020-02-01 13:46:21
457
原创 三、顺序容器
本文适合对于c++有一些基础的人阅读,指出一些容易被忽略的点。本文包括顺序容器(array/vector/string/deque/list/forward_list)和他们的迭代器大部分的使用方法,注意事项,顺序容器的限制;对指针、数组、和数组指针的解释;stack和queue容器适配器。
2020-01-31 17:10:29
280
原创 二、变量和基本类型
本文适合对于c++有一些基础的人阅读,指出一些容易被忽略的点。本文包括长整型和整型转化,无符号和有符号转化,字面常量的默认类型;普通初始化方式和列表初始化方式;声明和定义的区别;命名规则;指针和引用的区别;const的用法;类型推断等。
2020-01-30 08:29:31
269
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人