设计模式学习(C++)总结

 至此,对于设计模式的学习也就告一段落了,这段时间也就相当于走马观花一般地把二十三种设计模式全过了一遍,整体感觉有些模式在实际运用中很常见,但是有些模式似乎没怎么见过,不过这种设计模式的解决问题的核心思想才是学习的关键。
 以下即为二十三种设计模式的大意与链接:(我认为重要的模式均进行了加粗处理)

一、创建型模式

  1. 单例模式:保证为一个类只生成唯一的实例对象,分为饿汉式和懒汉式;单例模式
  2. 工厂模式:并非是通过直接创建对象的方式来实现,其主要依靠于工厂这个创建体来实现对象的创建,其包括简单工厂模式,工厂模式,抽象工厂模式;工厂模式
  3. 建造者模式:设计者,工程队与产品之间的三方联调模式,具体产品中包含自己的成员,以及对成员的定义与读取方式;而工程队分为抽象构造者和具体构造者,抽象构造者中均为虚函数,用于提供所有具体构造者的接口,而具体构造者也就是直接通过接口,对应具体产品中的变量与函数来实现具体的功能。设计者则负责直接调用抽象工程队,这样就在无需更改代码的情况下可以随意使用继承自抽象工程队的所有具体工程队了。建造者模式
  4. 原型模式:将一个复杂的对象设计为具有自我复制功能,其统一一套接口。原型模式

二、结构型模式

  1. 代理模式:代理类与被代理类都是为了实现某个对象,但是代理类可以在代理类的功能实现过程中(前后)进行一些处理工作;代理模式
  2. 装饰模式:把要添加的附加功能分别放在单独的类中,并让此类包含其所要装饰的类(对象)。其主要用于给一个固定对象添加一些额外的职责,且该模式比生成子类的方式更为灵活;装饰模式
  3. 适配器模式:适配器模式即根据所需接口,改变已有类的接口形式,来匹配所需接口。其主要适用于将一个类的接口转换为客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以一起工作;适配器模式
  4. 桥接模式:基于类的最小设计原则,通过使用封装,聚合以及继承等行为来让不同的类承担责任,且其主要特点是把抽象与行为实现分离开来,从而保证各部分的独立性与功能拓展;桥接模式
  5. 组合模式:通俗点来讲,就是数据结构中的树结构。其适用于单个对象和组合对象的使用具有一致性时(最典型的就是目录结构),将对象组合合成树形结构,以表示“部分-整体”;组合模式
  6. 外观模式:为一组有类似功能的类群,比如类库、子系统等等,提供一个一致的简单界面(类比于一套外用接口也可以),主要是为了让子系统更容易使用;外观模式
  7. 享元模式:其通过与其他类似对象共享数据来减小内存占用,能高效地支持大量的细粒度的对象。通俗点来说,享元模式适合于对于少量的重复对象,进行大量的重复操作的过程总,这样就可以将传统每个数据一个对象,变换为对少数的几个对象的不断计算,有效降低计算复杂度。享元模式

三、行为型模式

  1. 模板模式:在抽象类中统一操作步骤,并规定好接口,其子类实现接口,从而实现将各个具体的子类和操作步骤解耦合;模板模式
  2. 命令模式:为使用一个专门的类对这种调用过程加以封装,请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令;命令模式
  3. 责任链模式:构造一系列担当不同职责的类的对象来共同完成一个任务,这些类的对象之间像链条一样紧密相连;责任链模式
  4. 策略模式:常用在算法选用中,其主要是定义一个抽象的算法接口,并通过继承该抽象算法接口对所有算法加以封装和实现,而具体的算法选择过程在客户端中实现;策略模式
  5. 中介者模式:其传统定义为用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显示的相互引用,从而降低耦合,而且可以独立地改变它们之间的交互;中介者模式
  6. 观察者模式:用于定义对象间一种一对多的依赖关系,使得每一个对象改变状态,则所有依赖于他们的对象都会得到通知。说穿了,就是对于对象的状态监控,将对象的状态改变变为信号,通过这个状态改变的信号,用于做别的事情;观察者模式
  7. 备忘录模式:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后即可将该对象恢复到原先保存的状态;备忘录模式
  8. 访问者模式:表示一个作用于某对象结构的各元素的操作,它使你可以在不改变各元素的前提下,定义作用于这些元素的操作;访问者模式
  9. 状态模式:当一个对象的内在状态改变时允许改变其行为,使得这个对象看起来像是改变了其类。对这句话的简写,就是“通过用户 的状态来改变对象的行为”;状态模式
  10. 解释器模式:给定一个语言,定义它的一种表示方法,并定义一个解释器。这个解释器使用该表示来解析语言中的句子。通俗点来说,可以理解为密码的密码文和解密编号,原输入的句子为一个语言,其需要通过使用定义在解释器中的对应的解密方式来进行加工处理,从而得到需要的句子。解释器模式
  11. 迭代器模式:提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露该对象的内部表示,具体和标准库中容器的迭代器很相似;迭代器模式
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

方寸间沧海桑田

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值