C++ 设计模式

文章目录

设计模式初识

什么是设计模式

模式

模式:在一定环境中解决一些问题的方案(通俗点就是: 特定环境用固定的套路解决问题)

设计模式

设计模式是一套反复被人使用,多数人知晓的,经过分类编目的代码设计经验的总结

设计模式最终的目的为了应对变化,提高代码的复用和重用性

  1. 客户需求的变化

  2. 技术平台变化

  3. 开发团队的变化

  4. 市场环境的变化

    ...

设计模式分类

  • 创建型模式

    通常和对象创建有关,设计到对象实例化的方式(5种)

    • 工厂模式
    • 抽象工厂模式
    • 建造者模式
    • 原型模式
    • 单例模式
  • 结构型模式

    描述的是如何组合类和对象获得更大的结构(7种)

    • 代理模式
    • 装饰者模式
    • 适配器模式
    • 桥接模式
    • 组合模式
    • 外观模式
    • 享元模式
  • 行为型模式

    描述的类和对象的交互以及分配职责(11种 )

    • 模板方法模式
    • 命令模式
    • 责任链模式
    • 策略模式
    • 中介者模式
    • 观察者模式
    • 备忘录模式
    • 访问者模式
    • 状态模式
    • 解释器模式
    • 迭代器模式

面向对象的设计原则

依赖倒置原则(DIP)

DIP:Dependence Inversion Principle

  • 高层(稳定)不依赖低层(变化),两者依赖抽象(稳定)。
  • 抽象(稳定)不依赖细节(变化),细节依赖抽象(稳定)。

开放封闭原则(OCP)

OCP:Open For Extension, Closed For Modification Principle

  • 对扩展开放,对更改封闭

  • 类模块可扩展, 但不可修改

单一职责原则(SRP)

SRP:Single Responsibility Principle

  • 一个类应该仅有一个引起它变化的原因
  • 变化的方向隐含类的责任

里氏替换原则(LSP)

LSP:Liskov Substitution Principle

  • 子类必须能够替换它们的基类
  • 继承表达类型抽象

接口隔离原则(ISP)

  • 不应该强迫客户程序依赖他们不用的方法
  • 接口应该小而完备
  • 一个接口应该只提供一种对外功能

优先组合不是继承原则(CARP)

CARP:Composite/Aggregate Reuse Principle

  • 类的继承通常是"白箱复用",对象组合通常是"黑箱复用"
  • 继承在一定程序破坏封装性,子类和父类耦合度高

迪米特法则(LOD)

LOD:Law of Demeter

  • 对象应当对其他对象尽可能少的了解
  • 各个模块之间相互调用时,通常会提供一个统一的接口来实现
相关推荐
看见繁华4 分钟前
GO 教程
开发语言·后端·golang
Yy_Yyyyy_zz7 分钟前
深入理解 Go 的多返回值:语法、编译原理与工程实践
开发语言·后端·golang
AAA.建材批发刘哥9 分钟前
02--C++ 类和对象上篇
开发语言·c++
廋到被风吹走12 分钟前
【Java】【JVM】垃圾回收深度解析:G1/ZGC/Shenandoah原理、日志分析与STW优化
java·开发语言·jvm
xrkhy13 分钟前
Java全栈面试题及答案汇总(3)
java·开发语言·面试
橘颂TA15 分钟前
【Linux】从 “抢资源” 到 “优雅控场”:Linux 互斥锁的原理与 C++ RAII 封装实战(Ⅰ)
linux·运维·服务器·c++·算法
菩提祖师_17 分钟前
量子机器学习在时间序列预测中的应用
开发语言·javascript·爬虫·flutter
刘975317 分钟前
【第22天】22c#今日小结
开发语言·c#
明天好,会的24 分钟前
分形生成实验(三):Rust强类型驱动的后端分步实现与编译时契约
开发语言·人工智能·后端·rust
YanDDDeat27 分钟前
【JVM】类初始化和加载
java·开发语言·jvm·后端