重温设计模式-1、前言+设计模式分类

前言

1995 年,GoF(Gang of Four,四人组/四人帮)合作出版了《设计模式:可复用面向对象软件的基础》一书,共收录了 23 种设计模式,从此树立了软件设计模式领域的里程碑,人称「GoF设计模式」。其实就是软件开发过程中的套路,参考这些前辈总结的套路能够大大提高我们的开发效率和开发质量。
在这里插入图片描述
本系列博客主要记录自己在学习设计模式过程中的收获,同时自己想把自己的理解分享出来,万一对一些刚入计算机领域的同学有所帮助,万分荣幸,本博客每个设计模式都会配上C++的一个小demo,(很多博客都是C#和Java,C++的相对来说少一些),每个demo都会尽可能的通俗、形象、注释清晰,若有疏漏不足,欢迎各位同仁不吝赐教指点。

设计模式种类

设计模式是指在软件开发过程中,针对反复出现的问题所总结归纳出的通用解决方案。根据设计模式的目的和应用场景,可分为创建型模式、结构型模式、行为型模式三大类,以下是具体介绍:

创建型模式

单例模式:确保一个类只有一个实例,并提供一个全局访问点来访问该实例。例如,Windows 系统中的任务管理器,无论在系统的任何地方调用它,都是同一个实例。
工厂模式:定义一个创建对象的接口,让子类决定实例化哪一个类。比如,在游戏开发中,不同的怪物可能有不同的创建方式,通过怪物工厂可以根据需要创建不同类型的怪物。
抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。例如,在不同操作系统下创建不同风格的界面组件,如按钮、文本框等。
建造者模式:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。比如,在汽车制造中,通过建造者可以根据客户的需求组装不同配置的汽车。
原型模式:用原型实例指定创建对象的种类,并且通过拷贝这个原型来创建新的对象。在图形绘制系统中,对于一些复杂图形,可以先创建一个原型图形,然后通过复制该原型来快速创建多个相似图形。

结构型模式

代理模式:为其他对象提供一种代理以控制对这个对象的访问。例如,网络访问代理服务器,它可以代替用户访问一些受限的网络资源,并对访问进行控制和缓存。
装饰器模式:动态地给一个对象添加一些额外的职责,就扩展功能而言,它比继承更灵活。比如,给一个基本的图形绘制类添加不同的装饰,如颜色、阴影等,而不改变原图形绘制类的结构。
适配器模式:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。例如,在电源适配器中,将 220V 的电压转换为手机充电器所需的 5V 电压。
桥接模式:将抽象部分与它的实现部分分离,使它们都可以独立地变化。例如,在图形绘制系统中,形状和颜色是两个独立的维度,可以通过桥接模式将它们分离,使得形状和颜色可以分别扩展和变化。
组合模式:将对象组合成树形结构以表示 “部分 - 整体” 的层次结构,使得用户对单个对象和组合对象的使用具有一致性。比如,在文件系统中,文件夹可以包含文件和其他文件夹,它们构成了一个树形结构,对文件和文件夹的操作具有一致性。
外观模式:为子系统中的一组接口提供一个一致的界面,定义一个高层接口,这个接口使得这一子系统更加容易使用。例如,电脑的操作系统为用户提供了一个简单统一的界面,隐藏了硬件和软件的复杂交互。

行为型模式

观察者模式:定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象,当主题对象的状态发生变化时,会通知所有观察者对象。例如,在社交媒体平台上,当一个用户发布了一条新动态,关注他的其他用户会收到通知。
策略模式:定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。例如,在电商平台中,不同的促销活动可以看作是不同的策略,如满减策略、折扣策略等。
模板方法模式:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。例如,在冲泡咖啡和冲泡茶的过程中,都有烧水、冲泡、倒入杯子等步骤,但具体的冲泡材料和冲泡方式不同,可以在子类中实现。
命令模式:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。例如,在文本编辑器中,复制、粘贴、撤销等操作都可以看作是命令。
状态模式:当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。例如,在电梯控制系统中,电梯有不同的状态,如上升、下降、停止等,不同状态下的行为不同。
责任链模式:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。例如,在请假审批流程中,员工的请假申请可能需要经过多级审批,不同级别的审批人可以根据自己的权限进行审批。

更新信息

开始打算写系列博客是在2020.11初,今天开始动笔,打算2020.12月底完成。
写博客的原则是:先完成、再完善;
写博客的初衷是:知识,能输出、分享出来才是自己的;

更新于2024.12月初,从19年开始每年都要重新温习一到两遍设计模式,每次都会有不同的认识,于是重新整理出来,希望对后来者有所帮助

参考

在学习设计模式的过程中参考了很多书籍和博客,也推荐给大家,并在此感谢各位作者的付出与分享:
GoF(Gang of Four,四人组/四人帮):《设计模式:可复用面向对象软件的基础》
程杰:《大话设计模式》
结城浩:《图解设计模式》
小傅哥:《重学java设计模式》
B站:子烁爱学习
https://blog.youkuaiyun.com/wuzhekai1985/column/info/design
https://www.jianshu.com/p/5bf844141687
https://www.runoob.com/design-pattern/design-pattern-tutorial.html
在此表示感谢,谢谢各位的指点与分享

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值