C++23种设计模式(未整理,未完待续6/11)

文章目录


1.设计模式分类
C++23种设计模式(未整理,未完待续6/11)_第1张图片
设计模式的本质特征: 封装变化
(栈队列:适配器设计模式)
1) 创建型设计模式
C++23种设计模式(未整理,未完待续6/11)_第2张图片
2) 结构性设计模式
C++23种设计模式(未整理,未完待续6/11)_第3张图片
3) 行为型设计模式
C++23种设计模式(未整理,未完待续6/11)_第4张图片

红色为重点
C++23种设计模式(未整理,未完待续6/11)_第5张图片

2.创建类设计模式
1)单例模式:一个类只有一个实体

1.为什么将构造函数私有化?
①不希望构造函数被随意调用,不能在类之外直接创建对象(protected 的基类是抽象类)
②在类内部创建对象 :public的静态方法
2.pubic静态方法
①静态的数据成员指针(指向本类型的指针,要找到单例类创建的对象)
2)工厂模式

C++23种设计模式(未整理,未完待续6/11)_第6张图片
C++23种设计模式(未整理,未完待续6/11)_第7张图片

C++23种设计模式(未整理,未完待续6/11)_第8张图片

这样不行,就放入工厂
静态工厂模式
C++23种设计模式(未整理,未完待续6/11)_第9张图片
但是还要选择,故使用枚举
静态工厂方法
C++23种设计模式(未整理,未完待续6/11)_第10张图片

C++23种设计模式(未整理,未完待续6/11)_第11张图片
C++23种设计模式(未整理,未完待续6/11)_第12张图片
缺点:

  • 1.违反了开闭原则,扩展性受限
  • 2.违反了单一职责原则,做的事情太多了

使用条件:
使用类型比较少的时候


要进行改造-》
纯虚类当基类
C++23种设计模式(未整理,未完待续6/11)_第13张图片
继承
加override的好处,防止写错
工厂模式:对象的创建延迟到子类
C++23种设计模式(未整理,未完待续6/11)_第14张图片
C++23种设计模式(未整理,未完待续6/11)_第15张图片
C++23种设计模式(未整理,未完待续6/11)_第16张图片
基类指针托管派生类对象,

在这里插入图片描述
C++23种设计模式(未整理,未完待续6/11)_第17张图片
C++23种设计模式(未整理,未完待续6/11)_第18张图片
抽象工厂:一个工厂既生产图形,又生产涂料(生成多种类型的产品,然后组装成最终产品)
C++23种设计模式(未整理,未完待续6/11)_第19张图片

工厂模式使用场景:

不确定产品的类型,只是提供一个框架,
1.对于简单的对象,不需要使用工厂模式
2.对于复杂对象的创建,可以使用工厂模式

3)观察者模式
定义:定义对象间的一种一对多的依赖信息,当一个对象的状态发生改变时,所有所依赖他的都西昂都得到通知并被自动更新

结构:

C++23种设计模式(未整理,未完待续6/11)_第20张图片
类的前向声明可以减少头文件的依赖

在这里插入图片描述

C++23种设计模式(未整理,未完待续6/11)_第21张图片
C++23种设计模式(未整理,未完待续6/11)_第22张图片
subject.cpp

C++23种设计模式(未整理,未完待续6/11)_第23张图片
C++23种设计模式(未整理,未完待续6/11)_第24张图片

C++23种设计模式(未整理,未完待续6/11)_第25张图片
C++23种设计模式(未整理,未完待续6/11)_第26张图片
C++23种设计模式(未整理,未完待续6/11)_第27张图片
C++23种设计模式(未整理,未完待续6/11)_第28张图片
C++23种设计模式(未整理,未完待续6/11)_第29张图片
dynamic_cast<。>动态转换,优先使用指针,引用的话初始化就要赋值
dynamic_cast作用:如果能转换成功,就直接返回相应的地址;如果转换失败,返回的是空指针
C++23种设计模式(未整理,未完待续6/11)_第30张图片

C++23种设计模式(未整理,未完待续6/11)_第31张图片
在类内部实现的函数都是inline的,实现更快
::rand加匿名空间的随机种子

C++23种设计模式(未整理,未完待续6/11)_第32张图片

C++23种设计模式(未整理,未完待续6/11)_第33张图片
C++23种设计模式(未整理,未完待续6/11)_第34张图片
看线程 ps -elLf

C++23种设计模式(未整理,未完待续6/11)_第35张图片
C++23种设计模式(未整理,未完待续6/11)_第36张图片

using 编译指令
using namespace wd;
using 声明机制
using wd::Thread

你可能感兴趣的:(c++,设计模式,面试)