《C++新经典设计模式》之第22章 总结

news/2024/7/3 4:01:59

《C++新经典设计模式》之第22章 总结

  1. 面向对象程序设计原则
  • 开放封闭原则:扩展开放,修改封闭,增加新功能时,已有代码不变,增加新类、新成员函数实现。
  • 依赖倒置原则:高层组件不应该依赖于底层组件(具体实现类),两者都应该依赖于抽象层。
  • 组合复用原则:组合优于继承。
  • 迪米特法则:一个对象对其他对象的了解应尽可能少,降低对象耦合,提高系统可维护性。
  • 单一职责原则:类职责单一,只做一件事或只提供一种功能。
  • 里氏替换原则:基类可以无差别地用子类替换。
  1. 设计模式分类
  • 创建型模式:对象创建和使用分离。简单工厂、工厂方法、抽象工厂、原型、建造者、单例。
  • 结构型模式:灵活组合对象,简化设计。装饰、外观、组合、亨元、代理、适配器、桥接。
  • 行为型模式:对象协作,完成整体任务。模板方法、策略、观察者、命令、迭代器、状态、中介者、备忘录、责任链、访问者、解释器。
  1. 设计模式定义

1)创建型设计模式的定义

  • 简单工厂:函数根据不同参数创建并返回不同类对象,返回类对象具有相同父类。
  • 工厂方法:定义抽象工厂和抽象父类,具体子类由具体工厂创建并返回。
  • 抽象工厂:定义抽象工厂(多个接口,分别返回不同父类)和多个抽象父类,具体子类由具体工厂创建并返回。
  • 原型:通过复制原型实例创建新的对象。(T*clone(){return new T(this)},拷贝构造函数)
  • 建造者:复杂对象构建与表示分离,相同构建过程可以创建不同表示。
  • 单例:唯一实例类,通过全局方法访问

2)结构型设计模式的定义

  • 装饰:动态地给对象添加额外职责。
  • 外观:统一接口,访问子系统的一群接口。
  • 组合:对象组织成树形结构,对单个对象和组合对象的操作具有统一性。
  • 亨元:共享技术,大量细粒度对象复用。
  • 代理:提供代理,控制对象的访问。
  • 适配器:接口转换。
  • 桥接:抽象与实现分离,都可以独立地变化和扩展。

3)行为型设计模式的定义

  • 模板方法:父类定义算法骨架,具体步骤子类去实现。
  • 策略:定义抽象策略类(接口调用抽象父类指针)和抽象父类(含有策略类成员),具体策略类中实现算法(具体操作子类)。
  • 观察者:一个对象状态改变,依赖对象自动得到通知。
  • 命令:请求或命令封装成对象,当成参数传递,可以排队执行以及撤销。
  • 迭代器:顺序访问聚合对象元素,而不暴露对象内部。
  • 状态:对象内部状态改变时改变行为,对象看起来似乎修改了类。
  • 中介者:中介对象封装系列对象的交互。
  • 备忘录:捕获对象内部状态并保存,之后可用于恢复。
  • 责任链:多个对象连成链,并沿链传递请求,直到有对象处理为止。
  • 访问者:定义抽象访问者和父类元素,对象结构中增删子元素,并通过具体访问者循环操作子元素。
  • 解释器:定义语言文法,并用解释器解释语言中的句子。

http://lihuaxi.xjx100.cn/news/1888538.html

相关文章

nginx使用bat命令快速启动

.bat文件代码 echo off D: ::进入nginx安装目录 cd D:\enviroment\nginx-1.24.0 ::start nginx -c ./conf/nginx.confrem 如果启动前已经启动nginx并记录下pid文件,会kill指定进程 nginx.exe -s stoprem 测试配置文件语法正确性 nginx.exe -t -c conf/nginx.confre…

视频号小店与小商店有什么区别?一篇文章带你了解!

我是电商珠珠 视频号小店和小商店都是腾讯开发出来的电商平台,视频号小店出现的比小商店要晚一些,所以很多想入驻的新手,在这两者之间容易混淆。 下面我就来跟大家详细的讲一下,这两者之间区别。 1、团队不同 虽然都是腾讯公司…

ANSYS 应力和应变(EPTO)

目录 EPTO 应力和应变 Maximum, Middle, and Minimum Principal 最大、中间和最小主应力(主应变) Intensity 强度 Equivalent Total Strain等效总应变 Equivalent (von Mises)冯米塞斯等效应力(应变) 参考 EPTO EPTO X,…

网线市场现状与发展趋势预测

随着物联网、5G、云计算等技术的迅速发展,全球对于高速、稳定的网络需求急剧增长,这进一步推动了网线市场的发展。各种网络应用场景,从家庭到企业、数据中心到智能城市,都需要大量的高质量网线来支持数据传输和通信需求。本文将对…

[MySQL]事务原理之redo log,undo log

🌈键盘敲烂,年薪30万🌈 目录 一、log日志文件 📕 事务执行流程 📕 redo log 📕 undo log 二、总结 👀再来一遍ACID 1. 原子性:原子性确保事务作为一个整体执行,要么…

光伏发电技术的应用领域有哪些?

受益于技术进步、规模经济、开放的市场竞争和行业经验的不断积累,光伏发电的成本在最近十年急剧下降。很多国家都将光伏发电作为关键的新兴产业,光伏发电获得更为广泛的应用。 一、家庭应用 家庭应用的分布式光伏发电,就是安装在住户房屋顶…

(202312)so-large-lm:Task01引言

文章目录 前言要点总结1 什么是语言模型2 大模型相关历史回顾3 这门课的意义4 课程结构介绍 前言 感谢开源学习的组织者与活动的发起者为我们带来so-large-llm这一可谓大语言模型的通识课。原项目地址为so-large-lm。 要点总结 基础比较烂,所以我会用我能理解&am…

基于Spring Boot、Mybatis、Redis和Layui的企业电子招投标系统源码实现与立项流程

招投标管理系统是一款适用于招标代理、政府采购、企业采购和工程交易等领域的企业级应用平台。该平台以项目为主线,从项目立项到项目归档,实现了全流程的高效沟通和协作。通过该平台,用户可以实时共享项目数据信息,实现规范化管理…