首页 > 编程语言 >C++软件设计模式

C++软件设计模式

时间:2022-09-19 20:45:27浏览次数:74  
标签:原则 软件设计 接口 工厂 模式 派生类 设计模式 C++

模式:在某些场景下,针对某类问题的某种通用的解决方案。

1. 六大设计模式

  • 单一职责原则:就一个类而言,应该仅有一个引起它变化的原因。
  • 开放封闭原则:软件实体可以扩展,但是不可修改。即面对需求,对程序的改动可以通过增加代码来完成,但是不能改动现有的代码。
  • 里氏代换原则:一个软件实体如果使用的是一个基类,那么一定适用于其派生类。即在软件中,把基类替换成派生类,程序的行为没有变化。
  • 依赖倒转原则:抽象不应该依赖细节,细节应该依赖抽象。即针对接口编程,不要针对实现编程。
  • 迪米特原则:如果两个类不直接通信,那么这两个类就不应当发生直接的相互作用。如果一个类需要调用另一个类的某个方法的话,可以通过第三个类转发这个调用。
  • 接口隔离原则:每个接口中不存在派生类用不到却必须实现的方法,如果不然,就要将接口拆分,使用多个隔离的接口。

2. 设计模式分为三类

  • 创造型模式:单例模式、工厂模式、建造者模式、原型模式
  • 结构型模式:适配器模式、桥接模式、外观模式、组合模式、装饰模式、享元模式、代理模式
  • 行为型模式:责任链模式、命令模式、解释器模式、迭代器模式、中介者模式、备忘录模式、观察者模式、状态模式、策略模式、模板方法模式、访问者模式

3. 下面介绍常见的几种设计模式

  • 单例模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点
  • 工厂模式:包括简单工厂模式、抽象工厂模式、工厂方法模式

标签:原则,软件设计,接口,工厂,模式,派生类,设计模式,C++
From: https://www.cnblogs.com/acec/p/16708837.html

相关文章

  • 设计模式 -- Observer(观察者模式)
    在软件构建的过程中,我们需要为某些对象建立一种“通知依赖关系”——一个对象(目标对象)的状态发生改变,其他对象(观察者对象)都将得到通知。如果这样的依赖关系过于紧密,将使得......
  • 我的设计模式之旅、13 适配器模式
    编程旅途是漫长遥远的,在不同时刻有不同的感悟,本文会一直更新下去。思考总结思考问题程序调用第三方库经常会遇到的问题?你可能根本没有程序库的源代码,从而无法对其进行......
  • 安装Nginx报错:make: *** 没有规则可以创建“default”需要的目标“build”。 停止 安
    安装nginx要先安装那四个依赖yum-yinstallgccgcc-c++autoconfautomakemake CentOS下 安装 nginx执行配置命令./configure--prefix=/opt/nginx--sbin-pa......
  • C++中指针理解
    参考https://www.runoob.com/cplusplus/cpp-pointers.html正文指针的使用就像java中对象的赋值使用一样,如java中:classUser{ publicintage; User(intage){......
  • Repository模式
    之前一直很不理解为啥有了数据持久层之后还需要一个一层用来隔离数据持久层和业务逻辑层。数据库明明已经和业务逻辑解耦了,如果数据库更换,直接更改orm层不就好了。那现在......
  • T1022: 整型与布尔型的转换(信息学一本通C++)
    [题目描述]将一个整型变量的值赋给一个布尔型变量,再将这个布尔型变量的值赋给一个整型变量,得到的值是多少?[输入]一个整型范围内的整数,即初始时整型变量的值。[输出]一......
  • T1021: 打印字符(信息学一本通C++)
    [题目描述]输入一个整数,即字符的ASCII码,保证存在对应的可见字符。输出相对应的字符。[输入]一个整数,即字符的ASCII码,保证存在对应的可见字符。[输出]一行,包含相应的字......
  • T1023: Hello,World!的大小(信息学一本通C++)
    [题目描述]我们曾经输出过的“Hello,World!”吗?它虽然不是本章所涉及的基本数据类型的数据,但我们同样可以用sizeof函数获得它所占用的空间大小。[输入](无)[输出]一......
  • T1003: 对齐输出(信息学一本通C++)
    [题目描述]读入三个整数,按每个整数占8个字符的宽度,右对齐输出它们,按照格式要求依次输出三个整数,之间以一个空格分开。[输入]只有一行,按照格式要求依次输出三个整数,之间......
  • T1006: A+B问题(信息学一本通C++)
    [题目描述]求两个整数的和。[输入]只有一行,两个用空格隔开的整数。[输出]两个整数的和。[输入样例]12[输出样例]3 #include<iostream>usingnamespacestd......