简介
设计模式系列写完了,这边整理一份目录供给大家参考,同时也是为了能记录更多的应用
正文创建型:
每个创建型返回的都是一个对象,属于创建型的设计模式都是为了创建对象设计的。
0、简单工厂 :简单工厂不属于23种设计模式,但是简单工厂算是工厂模式的简化版。简化之处在于将类的创建选择交由简单工厂来处理。
简单工厂模式和工厂模式_Sean_TS_Wang的博客-CSDN博客
1、工厂模式:工厂模式是我们最常用的一种创建模式,每次我们实例化对象的时候,本质上就是使用工厂模式,因为我们每次实例化都已经明确应该使用哪种类了。选择权在客户端。
简单工厂模式和工厂模式_Sean_TS_Wang的博客-CSDN博客
2、抽象工厂模式:抽象工厂是将相似产品的工厂合并成一个大工厂,再由大工厂提供相应函数访问指定小工厂生产。目前没有想到合适的应用场景。
抽象工厂模式_Sean_TS_Wang的博客-CSDN博客
3、建造者模式:建造者模式是将对象的构造与表示分开,如果对象构建比较复杂,但是构造流程相同,可以将每个构建步骤拆成一个个类对象
建造者模式_Sean_TS_Wang的博客-CSDN博客
4、原型模式:
原型模式是直接将自身深拷贝,提供一个一模一样的实例化对象,不需要从零开始进行设置,简化实例设置步骤。应用场景有:git版本管控,数据库多版本管控
原型模式_Sean_TS_Wang的博客-CSDN博客
5、单例模式:单例模式是从头到尾只能实例化一个对象,作用就像全局变量,但是比全局变量多了很多可操作性
单例模式_Sean_TS_Wang的博客-CSDN博客
结构型:结构型设计模式只要注重类之间的相互组合。衍生出不同的组合结构
6、适配器模式:适配器模式主要作用就是转化,在不适配的类外面包裹一层,对外暴露出适配的接口。比较常见的场景是API封装,不同语言版本的API
适配器模式_Sean_TS_Wang的博客-CSDN博客
7、桥接模式:桥接模式主要作用搭建一个中间桥梁是将不同类的属性相互组合,应用场景暂时没有想到。
桥接模式_Sean_TS_Wang的博客-CSDN博客
8、组合模式:组合模式用法比较常见,最常见的用法就是树,好处是便于插拔,但是要注意枝干交叉
组合模式_Sean_TS_Wang的博客-CSDN博客
9、装饰器模式:装饰器模式是在不改变原有方法或者类的基础上添加新的方法,常见应用场景有权限判断,log记录
装饰器模式_Sean_TS_Wang的博客-CSDN博客
10、外观模式:外观模式是将复杂的关系对象封装起来,提供一套简易操作的方式,常见应用场景有MVC模式。
外观模式_Sean_TS_Wang的博客-CSDN博客
11、享元模式:享元模式从头到尾只实例化一个对象,每次通过改变对象的属性达到不同的效果,这样适用于不需要保留上一次属性改变的情况,例如游戏中渲染重复的场景。
享元模式_Sean_TS_Wang的博客-CSDN博客
12、代理模式:主要是在对象与对象交互之间加入一个代理对象,应用场景有:远程代理(隐藏实际代理对象地址),虚拟代理(通过地址引用对象),安全代理(权限控制),智能引导(路由分发)。
代理模式_Sean_TS_Wang的博客-CSDN博客
行为型行为型设计模式主要注重对象之间的方法交互
13、模板模式:模板模式是我们最常见的行为型设计模式,应用场景调用父类方法
模板模式_Sean_TS_Wang的博客-CSDN博客
14、中介者模式:中介者模式是将两个对象之间的交互隔开,双方通过中介者进行交流,不需要知道对面交流的对象是谁。常见的应用场景有:数据库同步
中介者模式_Sean_TS_Wang的博客-CSDN博客
15、解释器模式:解释器模式是将一种数据结构转化为另一种数据结构的模式,应用场景有:强制转化,序列化器,ORM
解释器模式_Sean_TS_Wang的博客-CSDN博客
16、命令模式:命令模式将一条命令的执行拆分成下命令者,命令传输者,命令执行者,三者分别独立封装,这样可以使得错误命令回滚。应用场景有:数据库事务回滚。
命令模式_Sean_TS_Wang的博客-CSDN博客
17、迭代器模式:迭代器模式就是在对象不需要生成的时候,先不创建,等需要的时候再创建。个人感觉有点像懒加载。应用场景:节省空间
迭代器模式_Sean_TS_Wang的博客-CSDN博客
18、备忘录模式:备忘录模式是将对象的属性进行备份(不是实例对象本身),等需要的时候可以进行状态的回滚,应用场景有:打游戏的记录档案,数据库的备份文件,git每次提交的版本信息文件
备忘录模式_Sean_TS_Wang的博客-CSDN博客
19、观察者模式:观察者模式是对观察的对象作出相应的反应,常见应用场景有:订阅-发布
观察者模式_Sean_TS_Wang的博客-CSDN博客
20、状态模式:状态模式将不同的状态都独立封装起来,并且设置好已知的状态转移关系。应用场景有:自动化测试
观察者模式_Sean_TS_Wang的博客-CSDN博客
21、责任链模式:责任链模式将不同状态都独立封装起来,但是不设置状态转移关系。应用场景有:新产品测试不确定测试流程的情况。
责任链模式_Sean_TS_Wang的博客-CSDN博客
22、策略模式:策略模式将不同的策略都独立封装起来,每次调用都是用相同的独立封装方法。应用场景有:会员权限获取,游戏角色属性buff加成。数据库ORM的筛选策略。
策略模式_Sean_TS_Wang的博客-CSDN博客
23、访问者模式:访问者模式针对,每个被访问者都支持任意访问者对象访问,但是每个访问对象的访问策略不同,因此将每个访问者独立封装。应用场景暂时没想到(来回套娃太复杂了)。
访问者模式_Sean_TS_Wang的博客-CSDN博客
总结
以上是个人对23种设计模式的理解与整理,样例代码都亲测可用,如果有什么不明白的地方,欢迎大家留言一起讨论



