设计模式分类
创建型设计模式
简单工厂模式
不符合开闭原则,因此没有列入23类模式里
对扩展开放对修改关闭
工厂方法模式
说穿了:系统开放一个接口(拓展开放)、不提供修改的接口(修改关闭),这是创建型下的工厂模式设计核心
抽象工厂
抽象工厂方法,一个工厂可以生产多个产品
这个可以理解成 一个人买猪肉汤底的饺子,但店里有面和饺子,有猪肉汤底和牛肉汤底;汤底是系列,饺子和面是产品;先选系列再选产品
生成器模式
生成器:创建一个产品上有很多的部件 生成器就负责创建部件(抽象)。concreteBuilder生成部件() Director导演
导演使用具体的生成器,生成器创建具体的产品,再把产品返回 。
原型模式
上午题没怎么考过
原型模式: 你本来有一个产品在这你给他复制一个
同一作品的各比赛复用
出现少,常作为干扰选项
单例模式
比如西游记里面取经路上用到各种交通工具,而白龙马只有一只,且一直都跟着
结构性设计模式
考过的次数
适配器模式
理解: 比如你想把usb设备插入typec接口时不行,所以就用到了适配器转接
adapter=转接头
桥接模式
菱形左边时整体右边是部分
理解 中间有一个桥 把抽象跟实现分开,左边可以随意增加产品也不会影响到右边的颜色
组合模式
装饰器模式
外观模式(22年考过)
关键:外观外观,提供一致的外观界面
理解:类似于一个网站里面有很多分页面子系统
享元模式
可以这样理解,有个很抠门的人带来一副五子棋,这副棋只有黑白各一颗棋子、一个用于记录的本本和棋盘,每下一次拿本本记录棋子的颜色和下的位置,通过本本的记录判断局势
细粒度 将一个对象进行划分,划分出大量的对象
黑子 白子例子
代理模式(适用性考的少)
关键词:控制对这个对象的访问
理解:proxy是代理 subject你想买的房车 real是付钱。代理可以帮你省去手续时间
行为设计模 看重点
责任链模式 (实用性意图都要)
**学生发出请假需求 辅导员只能批假7天 院长15 校长30天 这三个人就是处理者 。如果辅导员批不了得会用链把这个请求转给对应的人 **
命令模式
解释器模式(没考过)
迭代器
中介者模式
每个人都需要跟其他对象进行通信,这样显得很紧俏,用终结者模式 接收消息他在分发给对应的人
相当于让一个中转站帮忙传递消息
备忘录
解释:把状态保存下来 方便以后恢复
**备忘录模式 (memento)
在不破坏封装性的前提下捕获一个对象的内部状态
解释:把状态保存下来 方便以后恢复
原发器(Originator)决定要不要备份。备忘录只能被原发器访问
Caretaker 存储备份记录
**
观察者模式
解释:粉丝对应博主。是一对多。博主更新动态 粉丝收到更新通知
subiect对应博主,observer对应粉丝
状态模式
对象在内部状态改变时改变他的行为
解释:贩卖机 内部状态:有货无货,从有货卖完了 到无货,补货后状态转移为有货
策略模式
定义一列算法 把他们封装起来 是他们相互替换
模板方法模式
**定义一个操作中得算法骨架,而将一些步骤延迟到子类
解释:有很多子类 子类有很多重复的行为还有一些可能因为子类的不同而改变的操作。
就像你去提交申请表格,通常都会有一份模板。只需要加入模板。张三可能获奖证书多点,李四可能留学经历多些。他们的表格就像是从表格模板继承的子类。
**
模板是固定不变的比如上课进教室,下课出教室
访问者模式(适用性做了解)
表示一个作用于某对象结构中的各元素得操作
表示一个作用于某对象结构中的各元素得操作
解释“想象,一个电影院,有很多部电影,这些电影可以给很多个观众看,然后这些观众都能给电影评分。
这就是访问者
45选a,题目说了由它的子类实现,那应该要选的是它的父类
f访问者模式:访问所有对象,并且可以在不改变原来类的情况下定义一些作用域这个类的新操作