【C++设计模式】(二)设计模式简介

(二)设计模式简介

设计模式的概念来源于建筑学,最早由建筑学家克里斯托弗·亚历山大(Christopher Alexander)在其著作《建筑的模式语言》(A Pattern Language)中提出。亚历山大提出了一系列在建筑设计中常见的、能够解决特定问题的模式,这些模式可以在不同的建筑设计中重复使用。

这一思想后来被引入软件工程领域,形成了软件设计模式的概念。设计模式是对在特定上下文中反复出现的问题的解决方案的描述。它们提供了关于如何组织代码的通用方案,而不是特定的实现代码。

在软件工程中,设计模式的推广和普及主要归功于四位计算机科学家——埃里希·伽玛(Erich Gamma)、理查德·赫尔姆(Richard Helm)、拉尔夫·约翰逊(Ralph Johnson)和约翰·弗利塞德斯(John Vlissides),他们共同撰写了《设计模式:可复用面向对象软件的基础》(Design Patterns: Elements of Reusable Object-Oriented Software)一书。这本书总结了23种经典的面向对象设计模式,被称为“GoF”(Gang of Four,四人帮)设计模式。

软件设计复杂的根本原因是变化,软件设计的目标是复用。面向对象编程的设计模式以面向对象编程的原则为的理论基础和指导方针,提供了经过验证的解决方案来应对变化和提高代码的复用性,可以分为三大类:

  1. 创建型模式:包括单例模式、工厂方法模式、抽象工厂模式、生成器模式、原型模式。这些设计模式关注的是如何创建对象以及如何简化对象创建的复杂性,以应对需求变化对具体对象创建实现所带来的影响。

  2. 结构型模式:包括适配器模式、桥接模式、组合模式、装饰模式、外观模式、享元模式、代理模式。这些设计模式关注的是如何管理类与对象之间的组合关系,通过减少耦合性和增强灵活性来应对需求变化对对象结构带来的影响。

  3. 行为型模式:包括职责链模式、命令模式、解释器模式、迭代器模式、中介者模式、备忘录模式、观察者模式、状态模式、策略模式、模板方法模式、访问者模式。这些设计模式关注的是对象之间的交互和职责分配,通过解决对象间职责分配和通信问题来应对需求变化对多个交互对象带来的影响。

参考:C++设计模式 李建忠

相关推荐

  1. C++设计模式】(设计模式简介

    2024-07-09 23:36:05       21 阅读
  2. C++设计模式-设计模式简述

    2024-07-09 23:36:05       40 阅读
  3. c#模板设计模式

    2024-07-09 23:36:05       43 阅读
  4. Linux C++ 044-设计模式简介

    2024-07-09 23:36:05       22 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-09 23:36:05       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-09 23:36:05       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-09 23:36:05       45 阅读
  4. Python语言-面向对象

    2024-07-09 23:36:05       55 阅读

热门阅读

  1. 安卓面试题系列--【1】

    2024-07-09 23:36:05       20 阅读
  2. rman 异地恢复某个PDB的步骤

    2024-07-09 23:36:05       17 阅读
  3. 【国产开源可视化引擎Meta2d.js】拖拽

    2024-07-09 23:36:05       17 阅读
  4. 总结:Flink任务执行

    2024-07-09 23:36:05       19 阅读
  5. react v18——env环境变量配置、打包配置(craco)

    2024-07-09 23:36:05       23 阅读
  6. Consul与CoreDNS的对比

    2024-07-09 23:36:05       19 阅读
  7. git 合并多次commit,提交MR

    2024-07-09 23:36:05       17 阅读
  8. Redis中测试Stream的例子

    2024-07-09 23:36:05       19 阅读
  9. 「AIGC」大数据开发语言Scala入门

    2024-07-09 23:36:05       21 阅读
  10. 易保全推动区块链应用与AI融合创新发展

    2024-07-09 23:36:05       20 阅读
  11. 如何在LabVIEW中使用FPGA模块

    2024-07-09 23:36:05       16 阅读
  12. 【FFMPEG基础(一)】解码源码

    2024-07-09 23:36:05       19 阅读
  13. Oracle的RECYCLEBIN回收站:轻松恢复误删对象

    2024-07-09 23:36:05       20 阅读
  14. 0703_ARM7

    0703_ARM7

    2024-07-09 23:36:05      20 阅读
  15. CI脚本的python基础

    2024-07-09 23:36:05       21 阅读