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