OOD七大原则

2023-05-16

1、单一职责原则(Single Responsibility Principle)

        一个类或一个接口只有一个职责,有且仅有一个原因引起变化。

2、开闭原则(Open Closed Principle)

        开,指的是对外开放,可扩展;闭,指的是严格限制对已有内容的修改。

3、里氏替换原则(Liskov Substitution Principle)

        子类必须能够替换其父类,否则不应当设计成其子类。

4、最少知道原则(Law of Demeter)

        松耦合。

5、接口隔离原则(Interface Segregation Principle)

        类间的依赖关系应该建立在最小的接口上,不应该依赖它不需要的接口。

6、依赖倒置原则(Dependence Inversion Principle)

        设计和实现要依赖于抽象而非具体。

7、合成/聚合复用原则

        如果新对象的某些功能在别的已经创建好的对象里面已经实现,那么应当尽量使用别的对象提供的功能,使之成为新对象的一部分,而不要再重新创建。新对象可通过向这些对象的委派达到复用已有功能的效果。简而言之,要尽量使用合成/聚合,而非使用继承。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OOD七大原则 的相关文章

  • 防抖,节流 js

    概念 xff1a 函数防抖 debounce xff1a 触发高频事件后n秒内函数只会执行一次 xff0c 如果n秒内高频事件再次被触发 xff0c 则重新计算时间 函数节流 throttle xff1a 高频事件触发 xff0c 但在n秒
  • 如何远程访问Docker容器中的图形界面,如:kettle

    kettle是一个免费开源的 可视化的 功能强大的ETL工具 一般为了部署方便 xff0c 通常都部署在docker容器中 xff0c 那么如何远程访问kettle的图形界面呢 xff1f 我们通常有两种方式 xff1a 1 xff09 客
  • 电子罗盘的工作原理及校准

    ST集成传感器方案实现电子罗盘功能 电子 罗盘是一种重要的导航工具 xff0c 能实时提供移动物体的航向和姿态 随着半导体工艺的进步和手机 操作系统的发展 xff0c 集成了越来越多传感器 的智能手机 变得功能强大 xff0c 很多手机上都
  • OV2SLAM vs ORBSLAM2

    框图 各个模块算法 OV2SLAMORBSLAM2对比特征点提取与匹配Fast 43 LK光流Fast 43 ORB 描述子LK光流速度快输出的实时posePnPMotion only BAMotion only BA精度高一点初始化 单目
  • 论文学习--Learning High-Speed Flight in the Wild

    文章目录 Git子文链接代码运行编译环境编译步骤 可选 1 下载源码 2 先安装Open3D 3 修改Open3D的相关路径 4 开始编译 5 报错2 6 报错3 7 运行中报错 8 配置学习环境 9 下载flighemare渲染环境 运行
  • 仿真环境中生成专家轨迹

    仿真环境中生成专家轨迹 文章目录 仿真环境中生成专家轨迹简介代码运行步骤获取输入数据Reference TrajectoryEnvironment PointcloudFull Quadrotor State 方法描述输出规划轨迹 简介 本
  • 机器学习方法简介(1)--线性回归、逻辑回归、神经网络、支持向量机

    机器学习方法就是计算机根据已有的数据 xff0c 得出某个模型 xff0c 然后利用此模型预测未来的一种方法 机器学习的一个主要目的就是把人类思考归纳经验的过程转化为计算机通过对数据的处理计算得出模型的过程 1 回归算法 回归算法包括线性回
  • 仿真数据生成工具以及现有的仿真数据集

    现有仿真数据集 TartanAir TartanAir 是一个用AirSim生成的仿真SLAM数据集 xff0c 可以用于视觉SLAM 数据集提供 xff1a 双目 RGB 图像 xff0c 深度图像 xff0c 分割 xff0c 光流 x
  • 基于深度学习的SLAM概述

    目的 本博客总结最近看的几篇关于深度学习的SLAM以及基于深度学习的稠密重建 xff0c 简要对比记录特点 对比 年份名称类型框图前端输出地图方法特点回环2022DPVOmono VOVO每一帧的pose和paches转到3D坐标系下的3D
  • Airsim中运行OpenVINS和VINS_Fusion

    Airsim中运行OpenVINS和VINS Fusion 1 简介2 参考3 步骤3 1 编译3 2 运行3 3 运行结果3 4 相机和IMU参数配置 1 简介 本文简介在Airsim中运行OpenVINS和VINS Fusion 2 参
  • Apriltag生成

    Apriltag生成 一 单个Apriltag生成 生成单个的二维码 xff0c 下面给出30cmx30cm打印大小的生成脚本 xff0c 输入路径直接用 apriltag imgs 工程的tag36h11系列的图片即可 生成结果得到587
  • 论文学习---Learned Inertial Odometry for Autonomous Drone Racing

    总结 xff1a 文章主要介绍了仅用IMU作为输入的深度学习网络来估计相对位移 xff0c 估计的结果用于EKF更新 xff0c 可以得到较为准确的EKF估计状态 摘要 惯性里程计是敏捷无人机状态估计的一个具有吸引力的方案 单纯的使用IMU
  • 白话----之UCOS 信号量和邮箱

    总体理解 xff1a 两个任务需要共同访问一个共同的资源 xff0c 来切换或跳到不同的动作执行 这就产生信号量 两个任务 需要根据不同的按键选择 xff0c 来执行不同的动作 xff0c 产生邮箱 信号量和邮箱 我通过一个例子来学习的 希

随机推荐

  • 数据结构--结构体

    数据结构 https img blog csdn net 20181020104828701 watermark 2 text aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3d4dWVjaGVuZw 61 61 font 5a
  • 小试牛刀爬北邮人论坛十大

    本来是为了写Alfred的work flow 不知道出了什么问题 一直都显示不了 sad 61 61 先把爬虫的代码贴这好了 好久没碰过python了 coding utf 8 author 61 39 wangxiao 39 import
  • mac安装homebrew报错 curl: (7) Failed to connect to raw.githubusercontent.com port443

    mac安装brew一直报错 xff0c 完整的报错信息如下 span class token literal property property curl span span class token operator span span c
  • C++ vector用法详解

    vector是STL的动态数组 xff0c 可以在运行中根据需要改变数组的大小 因为它以数组的形式储存 xff0c 所以它的内存空间是连续的 vector的头文件为 include lt vector gt 常用方法 xff1a span
  • 机器学习方法简介(2)--决策树、随机森林、朴素贝叶斯

    1 决策树 决策树是一种用于对实例进行分类的树形结构 Hunt算法 是一种采用局部最优策略的决策树构建算法 xff0c 它同时也是许多决策树算法的基础 xff0c 包括ID3 C4 5和CART等 Hunt算法的递归定义如下 xff1a 1
  • 软件工程——结构化分析方法

    结构化方法 概念 用来指导软件项目的开发 一种系统化的软件开发方法包括 xff1a 结构化分析方法 结构化设计方法 结构化程序设计方法 结构化设计方法和结构化程序设计方法的区别 xff0c 前者指的软件开发设计阶段的软件体系架构以及内部模块
  • linux安装软件方式--源码编译安装

    简介 xff1a 介绍源码编译安装软件包的管理 1 源码安装优点 xff1a 编译安装过程 xff0c 可以设定参数 xff0c 指定安装目录 xff0c 按照需求进行安装 xff0c 指定安装的版本 xff0c 灵活性比较大 2 源码安装
  • 正点原子mpu6050数据读取失败问题

    如果下载他们官方的程序都读不出来的话 看看你买的是stm32f407的V3版本吗 xff1f 这个版本是只有磁力计的官方代码 你用V3板跑他们的mpu的代码就会读不出来 xff0c 那个mpu6050的代码是已经停产的V2板子的
  • keil5 STM32F103 下载程序出错Flash Download failed - "Cortex-M3"

    1 背景 STM32F103单片机无法下载程序 最近在使用STM32单片机做项目 先是使用的H743单片机 xff0c 现在需要使用到F103单片机 H7烧写程序正常 xff0c 但是无法对F103烧写程序 错误为 xff1a Error
  • 略解总线带宽计算

    例1 xff1a 解 xff1a 时钟频率100MHz 也就是说一秒钟有100M个时钟周期 5个时钟周期传一个字 100M个时钟周期可以传100M 5 61 20M个字 也就是1秒钟可以传20M个字 一个字是16位 也就是2B 20M个字就
  • TX2(2): 安装JetPack L4T 3.1 (9003载板)

    参考官网教程 xff0c 其实官网教程已经挺详细 xff0c 主要看官网教程就行 http docs nvidia com jetpack l4t 3 1 index html developertools mobile jetpack l
  • String字符串编码格式转换(UTF8/GBK)

    1 转UTF8编码 string StdStringToUTF8 const string amp str int nwLen 61 MultiByteToWideChar CP ACP 0 str c str 1 NULL 0 wchar
  • 前缀树(Trie树)

    前缀树是一种用于快速检索的多叉树结构 xff0c 利用字符串的公共前缀来降低查询时间 xff0c 核心思想是空间换时间 xff0c 经常被搜索引擎用于文本词频统计 优点 xff1a 最大限度地减少无谓的字符串比较 xff0c 查询效率高 x
  • C++串口通信

    一 串口通信的基本原理 串口的本质功能是作为 CPU 和串行设备间的编码转换器 当数据从 CPU 经过串行端口发送出去时 xff0c 字节数据转换为串行的位 xff08 bit xff09 xff1b 在接收数据时 xff0c 串行的位被转
  • 死锁的四个必要条件以及处理策略

    一 什么是死锁 死锁是指两个或两个以上的进程 xff08 线程 xff09 在运行过程中因争夺资源而造成的一种僵局 例如 xff0c 某计算机系统中只有一台打印机和一台输入设备 xff0c 进程P1正占用输入设备 xff0c 同时又提出使用
  • EM算法简介

    1 简介 EM算法是一种迭代优化策略 xff0c 由于它的计算方法中每一次迭代都分两步 xff0c 其中一个为期望步 xff08 E步 xff09 xff0c 另一个为极大步 xff08 M步 xff09 xff0c 所以算法被称为EM算法
  • 三菱PLC MC协议

    1 MC协议的目的 xff1a 允许外部设备读写PLC内部寄存器 2 协议格式 xff1a 通讯方式有RS485和TCP IP两种 xff0c 通讯格式有很多种 xff1a 3E 3C 4C 4E帧格式 xff0c 通讯内容分为二进制和AS
  • find和find_if用法

    一 find的用法 STL容器中有很多find xff0c 比如说set xff0c map 他们内部都有内置的find函数 xff0c 一般情况下 xff0c 如果我们用到这些容器 xff0c 那么我们直接用它的内置find就可以了 xf
  • QTreeView节点拖放

    拖放操作分为拖动 Drag 和放置 Drop 两种操作 xff0c 当拖动时需要把拖动的数据进行存储 称为编码 xff0c 数据存储为QMimeData类型的对象 称为放置数据 xff0c 当执行放置操作时需要把存储的数据读取出来 称为解码
  • OOD七大原则

    1 单一职责原则 xff08 Single Responsibility Principle xff09 一个类或一个接口只有一个职责 xff0c 有且仅有一个原因引起变化 2 开闭原则 xff08 Open Closed Principl