首页 > 编程语言 >C++设计模式的原则

C++设计模式的原则

时间:2024-05-29 22:34:58浏览次数:10  
标签:设计模式 原则 C++ 依赖于 抽象 接口 模块 应该

1、依赖倒置原则(DIP )
·高层模块(稳定)不应该依赖于低层模块(变化),二者都应该依赖于抽象稳定)。
·抽象(稳定)不应该依赖于实现细节(变化),实现细节应该依赖于抽象(稳定)。
2、开放封闭原则( OCP )
·对扩展开放,对更改封闭。
·类模块应该是可扩展的,但是不可修改。
3、单一职责原则(SRP )
一个类应该仅有一个引起它变化的原因。
·变化的方向隐含着类的责任。我感觉就是一个类的方法不能有太多,方法太多也就是责任太多,不宜与扩展。
4、Liskov替换原则( LSP )
·子类必须能够替换它们的基类(IS-A)。
继承表达类型抽象。我理解的是父类中的方法,之类根本就有很多用不上,那就违背了找个原则
5、接口隔离原则(ISP )
·不应该强迫客户程序依赖它们不用的方法。
·接口应该小而完备。
6、优先使用对象的组合,而不是继承
对象组合也就是比如classA里面放一个ClassB的指针这样。因为父类给子类暴露的接口其实是很多的,破坏了封装。
7、面向接口的原则
程序是不需要知道对象的类型,只需要知道接口,实现高内聚,低耦合。

标签:设计模式,原则,C++,依赖于,抽象,接口,模块,应该
From: https://www.cnblogs.com/chhblogs/p/18221259

相关文章

  • 23种设计模式之适配器模式
    适配器模式1、定义适配器模式:将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。2、适配器模式结构Target(目标抽象类):定义客户所需要的接口,可以是一个抽象类或接口,也可以是具体类。在类适配器中,由于Ja......
  • 23种设计模式之原型模式
    原型模式1、定义原型模式:使用原型实例指定要创建对象的类型,并且通过复制这个类型来创建新的对象。2、深克隆与浅克隆根据在复制原型对象的同时是否复制包含在原型对象中引用类型的成员变量,克隆机制可以分为浅克隆和深克隆。2.1浅克隆简单来说浅克隆就是原型对象被复......
  • [ C++ ] 深入理解模板( 初 阶 )
    函数模板函数模板格式template<typenameT1,typenameT2,......,typenameTn>返回值类型函数名(参数列表){}注意:typename是用来定义模板参数关键字,也可以使用class(切记:不能使用struct代替class)函数模板的实例化模板参数的匹配原则1.一个非模板函数可以和......
  • P9 【力扣+知识点】【算法】【二分查找】C++版
    【704】二分查找(模板题)看到复杂度logN,得想到二分给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target  ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。示例1:输入:nums=[-1,0,3,5,9,12],target=9输出:4解释:9出现在......
  • 设计模式-策略模式
    在软件开发中,我们经常会遇到在实现一个功能的时候会有多种不同的途径,每一个途径都对应一种算法,此时我们可以使用策略模式来实现灵活地选择解决途径。策略模式的定义在策略模式中,定义了一些独立的类来封装不同的算法,每个类封装一种具体的算法。每个封装算法的类都可以称......
  • VSCode配置C++环境
    目录一.环境准备二.编写代码三.直接利用gcc以及gdb编译调试四.配置tasks.json和launch.json五.其他这篇文章讨论一下VSCode配置C++的方法,重点要讨论的是tasks.json和launch.json这两个配置文件,所以很多基础内容会直接略过。一.环境准备1.安装MinGW-w64。为啥要装Min......
  • c++ static const
      ===============================首先得知道为什么要使用静态数据成员:在类中,静态成员可以实现多个对象之间的数据共享,并且使用静态数据成员还不会破坏隐藏的原则,即保证了安全性。因此,静态成员是类的所有对象中共享的成员,而不是某个对象的成员。使用静态数据成员......
  • C++ 跨线程 传递指针
    目录在C++中跨线程传递指针时,需要注意线程安全和生命周期管理的问题。以下是一些常见的方法,用于在C++中安全地跨线程传递指针:使用智能指针和线程安全队列结合使用std::shared_ptr和线程安全的队列(如std::queue配合互斥锁)是一种常见的方法。#include<iostream>#include<t......
  • C++:虚表指针、虚表、虚函数和动态多态
    classBase{public:virtualvoidshow(){std::cout<<"Baseshow"<<std::endl;}};classDerived_1:publicBase{public:voidshow()override{std::cout<<"Derivedshow"<<std::endl;}};class......
  • C++ 线程同步condition_variable的使用
    一,condition_variable使用步骤创建一个scondition_variable对象。创建一个互斥量对象mutex。创建两个线程:等待线程和唤醒线程。在等待线程中,使用unique_lock锁定互斥量,并调用wait函数进入等待状态。在唤醒线程lock_guard锁定互斥量,并调用notify_one或notify_all函数唤醒等......