设计模式
以C++为编程语言,记录学习设计模式细节
s.feng
计算机视觉,C++
展开
-
Policy-based design
这种设计模式主要是利用模板和继承来实现的策略模式。下面是维基百科上的demo。原创 2022-09-26 16:14:46 · 207 阅读 · 0 评论 -
11.设计模式之《访问器模式》
背景在软件构建的过程中,由于需求的变化会导致所有子类都要更新,在不改变原始框架的情况下如何扩展?例子比如说有个水果基类,下面有苹果,橘子,香蕉,原创 2021-11-11 14:22:49 · 338 阅读 · 0 评论 -
10.设计模式之《适配器模式》
适配器模式是结构性模式的一种。原创 2021-11-01 19:30:51 · 74 阅读 · 0 评论 -
1.设计模式之《序言》
目的代码重构,架构设计材料书:《设计模式:可复用面向对象软件的基础》视频:链接B站原因变化原创 2021-04-16 10:02:34 · 104 阅读 · 0 评论 -
2.设计模式之《模板方法模式》
设计模式使用有两个误区,第一就是生搬硬套,比如要写个1+1的算法,理论来说没有课变化的东西,就是一个死的算法流程,以后再过1000年可能也没人需要变动的算法,一个函数就可以解决,可是非要去想利用设计模式,这就是很愚蠢的行为;第二就是需求很明显,却从来不考虑去使用,不如要开发一个深度学习推理框架,理论要支持各种算法,但是开发者就只是将各种算法实现后,然后用if else去判断,可维护扩展不强,所以也是不好。其实利用设计模式的核心就是看一下项目,能够把这个项目看成一个带时间轴的,后面那些地方会持续变动,如何和.原创 2021-04-09 11:07:54 · 102 阅读 · 0 评论 -
3.设计模式之《策略模式》
策略简单说就是做一件事情的方法,比如打折出售商品,可以以5折出售这个策略实现,也可以以满减,或者买一送一的方式,反正有很多策略,则我们的商品类可以如下:class Product { SaleByStrategyA();}问题是,当我们跟换不同的策略时要重新改写,考虑到尽量不动代码,所以尽可能将策略作为一个属性放在类中,每次对象初始化的传入对应的策略就行了,这样就需要将类似的Sa...原创 2020-03-29 23:20:12 · 117 阅读 · 0 评论 -
4.设计模式之《观察者模式》
定义解耦合的目的,当一个类出现改变,其他类都要跟着变化例子分割文件的例子class Filecut{ string name; int num; Bar process; FileSpliter spliter(name, num, process); spliter.split()}class FileSpliter{ string name; int num; Bar process; void split { for(int i=0; i<num; i++原创 2021-04-09 17:30:01 · 84 阅读 · 0 评论 -
5.设计模式之《装饰模式》
例子class Stream{ virtual char Read(int num) {} virtual void Seek(int position){}; virtual void Write(char data){};}class FileStream: public Stream{ virtual char Read(int num) {} virtual void Seek(int position){}; virtual void Write(char data){};原创 2021-04-16 11:32:45 · 133 阅读 · 0 评论 -
6. 设计模式之《单例模式》
单例模式,顾名思义就是只有一个对象,考虑一下什么时候只需要一个对象?常见比如日志对象,这种最好就是一个项目中一个对象。class Log{public: Log* getLog() { if(nullptr == m_log) log = new Log(); return m_log; }private: st...原创 2020-03-30 23:19:20 · 229 阅读 · 0 评论 -
7.设计模式之《简单工厂、工厂方法、抽象工厂模式》
先来看一个例子,现在我们要写一个函数,功能是榨汁机:void foo(){ water-thing* target = new Apple(); target->getwater();}可以看到,当我们需要苹果汁时候,我们要new 一个对象,需要草莓汁的时候要new一个草莓汁的对象,现在想这样做:void foo(Factory factory, stri...原创 2020-03-27 20:04:36 · 212 阅读 · 0 评论 -
8.设计模式之《桥模式》
。。。原创 2021-09-01 19:54:23 · 123 阅读 · 0 评论 -
9.设计模式之《原型模式》
原型模式,其实和工厂方法都是一种类型的,就是解决直接new的耦合问题.相同点:原型模式和拷贝构造函数都是要产生对象的复制品。不同点:原型模式实现的是一个clone接口,注意是接口,也就是基于多态的clone虚函数。也就是说原型模式能够通过基类指针来复制派生类对象。拷贝构造函数完不成这样的任务。class ProtoType{ public : ProtoType(); ProtoType(const ProtoType &obj); virtual ~ProtoType(原创 2021-09-12 16:54:44 · 124 阅读 · 0 评论 -
C++中的pimpl用法(Pointer to Implementation)
定义一种C++的编程手法,一方面可以减少编译依赖,对于大工程来说可以减少编译时间,一方面对于库来说可以减少私有成员的暴露,减少风险。demo// student.hclass Student{ Student(int age, string name, int sex); ~Student(); string show();private: int m_age; string m_name; int m_sex;}// student.cppstring Student::sh原创 2021-08-24 20:06:37 · 984 阅读 · 0 评论