设计模式分类



创建型设计模式

简单工厂模式
不符合开闭原则,因此没有列入23类模式里
对扩展开放对修改关闭

工厂方法模式
说穿了:系统开放一个接口(拓展开放)、不提供修改的接口(修改关闭),这是创建型下的工厂模式设计核心



抽象工厂
抽象工厂方法,一个工厂可以生产多个产品
这个可以理解成 一个人买猪肉汤底的饺子,但店里有面和饺子,有猪肉汤底和牛肉汤底;汤底是系列,饺子和面是产品;先选系列再选产品


生成器模式


生成器:创建一个产品上有很多的部件 生成器就负责创建部件(抽象)。concreteBuilder生成部件() Director导演
导演使用具体的生成器,生成器创建具体的产品,再把产品返回 。


原型模式
上午题没怎么考过


原型模式: 你本来有一个产品在这你给他复制一个
同一作品的各比赛复用
出现少,常作为干扰选项
单例模式
比如西游记里面取经路上用到各种交通工具,而白龙马只有一只,且一直都跟着

结构性设计模式

考过的次数
适配器模式
理解: 比如你想把usb设备插入typec接口时不行,所以就用到了适配器转接


adapter=转接头
桥接模式


菱形左边时整体右边是部分

理解 中间有一个桥 把抽象跟实现分开,左边可以随意增加产品也不会影响到右边的颜色

组合模式



装饰器模式


外观模式(22年考过)

关键:外观外观,提供一致的外观界面
理解:类似于一个网站里面有很多分页面子系统

享元模式
可以这样理解,有个很抠门的人带来一副五子棋,这副棋只有黑白各一颗棋子、一个用于记录的本本和棋盘,每下一次拿本本记录棋子的颜色和下的位置,通过本本的记录判断局势


细粒度 将一个对象进行划分,划分出大量的对象
黑子 白子例子
代理模式(适用性考的少)

关键词:控制对这个对象的访问
理解:proxy是代理 subject你想买的房车 real是付钱。代理可以帮你省去手续时间


行为设计模 看重点

责任链模式 (实用性意图都要)

**学生发出请假需求 辅导员只能批假7天 院长15 校长30天 这三个人就是处理者 。如果辅导员批不了得会用链把这个请求转给对应的人 **

命令模式


解释器模式(没考过)



迭代器


中介者模式

每个人都需要跟其他对象进行通信,这样显得很紧俏,用终结者模式 接收消息他在分发给对应的人
相当于让一个中转站帮忙传递消息

备忘录

解释:把状态保存下来 方便以后恢复
**备忘录模式 (memento)
在不破坏封装性的前提下捕获一个对象的内部状态
解释:把状态保存下来 方便以后恢复
原发器(Originator)决定要不要备份。备忘录只能被原发器访问
Caretaker 存储备份记录
**

观察者模式

解释:粉丝对应博主。是一对多。博主更新动态 粉丝收到更新通知
subiect对应博主,observer对应粉丝

状态模式

对象在内部状态改变时改变他的行为
解释:贩卖机 内部状态:有货无货,从有货卖完了 到无货,补货后状态转移为有货

策略模式
定义一列算法 把他们封装起来 是他们相互替换


模板方法模式

**定义一个操作中得算法骨架,而将一些步骤延迟到子类
解释:有很多子类 子类有很多重复的行为还有一些可能因为子类的不同而改变的操作。
就像你去提交申请表格,通常都会有一份模板。只需要加入模板。张三可能获奖证书多点,李四可能留学经历多些。他们的表格就像是从表格模板继承的子类。
**
模板是固定不变的比如上课进教室,下课出教室

访问者模式(适用性做了解)
表示一个作用于某对象结构中的各元素得操作



表示一个作用于某对象结构中的各元素得操作
解释“想象,一个电影院,有很多部电影,这些电影可以给很多个观众看,然后这些观众都能给电影评分。


这就是访问者
45选a,题目说了由它的子类实现,那应该要选的是它的父类
f访问者模式:访问所有对象,并且可以在不改变原来类的情况下定义一些作用域这个类的新操作



![[CTF/网络安全] 攻防世界 command_execution 解题详析](https://img-blog.csdnimg.cn/0f3d2a3d813a48318d09c20a07995b56.png#pic_center)















