面向对象的基本原则【学习、记录】

1、单一职责原则定义
  • 一个对象应该只包含单一的职责,并且该职责被完整地封装在一个类中。
  • 就一个类而言,应该仅有一个引起它变化的原因。
2、开闭原则定义
  • 一个软件实体应当对扩展开放,对修改关闭。
3、里氏代换原则定义
  • 如果对每一个类型为S的对象o1,都有类型为T的对象o2,使得以T定义的所有程序P在所有的对象o1都代换成o2时,程序P的行为没有变化,那么类型S是类型T的子类型。
  • 所有引用基类(父类)的地方必须能透明地使用其子类的对象。
4、依赖倒转原则定义
  • 高层模块不应该依赖低层模块,它们都应该依赖抽象。抽象不应该依赖于细节,细节应该依赖于抽象。
  • 要针对接口编程,不要针对实现编程。
5、接口隔离原则定义
  • 客户端不应该依赖那些它不需要的接口。注意:在该定义中的接口指的是所定义的方法。
  • 一旦一个接口太大,则需要将它分割成一些更细小的接口,使用该接口的客户端仅需知道与之相关的方法即可。
6、合成复用原则定义
  • 合成复用原则,又称为组合/聚合复用原则,其定义如下:尽量使用对象组合,而不是继承来达到复用的目的。
7 、迪米特法则定义
  • 迪米特法则,又称为最少知识原则,它有多种定义方法,其中几种典型定义如下:
    (1) 不要和“陌生人”说话。
    (2) 只与你的直接朋友通信。
    (3) 每一个软件单位对其他的单位都只有最少的知识,而且局限于那些与本单位密切相关的软件单位。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/64047.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

什么是根服务器?有什么作用?

你知道什么是根服务器吗?在互联网的庞大架构中,根服务器很多人对它的了解并不深入。那么,根服务器到底是什么,它有什么作用呢? 什么是根服务器? 根服务器是互联网域名系统(DNS)的一部分,负责管理和维护最顶层的域名信息。简单…

MTK--mt7921 usb wifi debug

文章目录 1、代码编译2、配置文件修改3、Wifi设置命令4、Wifi debug 淘宝随便买个7921的usb wifi。 1、代码编译 export TEMPLATECONF${PWD}/meta/meta-mediatek-mt8518/conf/base/aud8518sp2-slc-32b-7921-c4a-user source meta/poky/oe-init-build-env bitbake mtk-image-au…

日志层次结构及logger.propagate的作用

一、Python logging 模块的层次结构 Python 的 logging 模块提供了一个灵活的日志系统,适用于各种规模的应用程序。其核心设计基于层次化的命名系统,使得日志记录可以按照组织结构进行管理和配置。 1. Logger(日志器) 定义&…

如何配置OSB连接数据连接/读取超时

1.Oracle DB OSB中的DBAdapter的查询超时参数配置没用,要解决接口超时问题,需要在console中的数据源配置超时参数: oracle.net.CONNECT_TIMEOUT30000 oracle.net.READ_TIMEOUT30000 添加图片注释,不超过 140 字(可选…

一起学Git【第六节:查看版本差异】

git diff是 Git 版本控制系统中用于展示差异的强大工具。他可以用于查看文件在工作区、暂存区和版本库之间的差异、任意两个指定版本之间的差异和两个分支之间的差异等,接下来进行详细的介绍。 1.显示工作区与暂存区之间的差异 # 显示工作区和暂存区之间的差异,后面不加参数…

Python数据处理——re库与pydantic的使用总结与实战,处理采集到的思科ASA防火墙设备信息

目录 Python正则表达式re库的基本用法 引入re库 各函数功能 总结 使用方法举例 正则表达式语法与书写方式 正则表达式的常用操作符 思科ASA防火墙数据 数据1 数据2 书写正则表达式 Python中pydantic的使用 导入基础数据模板 根据数据采集目标定义Pydantic数据类型…

Yolo11改进策略:Head改进|DynamicHead,利用注意力机制统一目标检测头部|即插即用

摘要 论文介绍 本文介绍了一种名为DynamicHead的模块,该模块旨在通过注意力机制统一目标检测头部,以提升目标检测的性能。论文详细阐述了DynamicHead的工作原理,并通过实验证明了其在COCO基准测试上的有效性和效率。 创新点 DynamicHead模块的创新之处在于它首次尝试在一…

`we_chat_union_id IS NOT NULL` 和 `we_chat_union_id != ‘‘` 这两个条件之间的区别

文章目录 1、什么是空字符串?2、两个引号之间加上空格 好的,我们来详细解释一下 we_chat_union_id IS NOT NULL 和 we_chat_union_id ! 这两个条件之间的区别,以及它们在 SQL 查询中的作用: 1. we_chat_union_id IS NOT NULL 含…

如何利用AWS监听存储桶并上传到tg bot

业务描述: 需要监听aws的存储中的最新消息,发送新的消息推送到指定tg的频道。 主要流程: 1.上传消息到s3存储桶(不做具体描述) 2.通过aws的lambda监听s3存储桶的最新消息(txt文件) 3.将txt文件…

HarmonyOS NEXT 实战之元服务:静态案例效果---查看国内航班服务

背景: 前几篇学习了元服务,后面几期就让我们开发简单的元服务吧,里面丰富的内容大家自己加,本期案例 仅供参考 先上本期效果图 ,里面图片自行替换 效果图1完整代码案例如下: Index代码 import { authen…

Windows11家庭版启动Hyper-V

Hyper-V 是微软的硬件虚拟化产品,允许在 Windows 上以虚拟机形式运行多个操作系统。每个虚拟机都在虚拟硬件上运行,可以创建虚拟硬盘驱动器、虚拟交换机等虚拟设备。使用虚拟化可以运行需要较旧版本的 Windows 或非 Windows 操作系统的软件,以…

为什么深度学习和神经网络要使用 GPU?

为什么深度学习和神经网络要使用 GPU? 本篇文章的目标是帮助初学者了解 CUDA 是什么,以及它如何与 PyTorch 配合使用,更重要的是,我们为何在神经网络编程中使用 GPU。 图形处理单元 (GPU) 要了解 CUDA,我们需要对图…

每天五分钟机器学习:核函数

本文重点 在学习支持向量机算法之前,我们要继续学习一些数学基础,本文我们将学习核函数的概念。当数据线性不可分的时候,此时就需要核函数出场了,它可以将低维不可分的数据映射到高维可分数据,此时就可以完成数据分类了。 核函数的定义 核函数K(x, y)定义为两个数据点x…

MaaS(Model as a Service)

1.MasS是什么? Model as a Service(MaaS)是一种云计算服务模式,它允许用户通过互联网访问和使用机器学习模型,而不需要自行构建和维护这些模型。MaaS提供了模型的托管、管理和监控,使用户能够专注于应用程…

图像处理-Ch7-快速小波变换和小波包

个人博客!无广告观看,因为这节内容太多了,有点放不下,分了三节 文章目录 快速小波变换(The Fast Wavelet Transform)与两频段子带编译码系统的关系例:计算一维小波变换 一维快速小波反变换例:计算一维小波…

KAFKA 权威指南笔记(一)究竟应该配置多少个BROKER?

一个KAFKA集群需要多少个BROKER? 一个单独的Kafka服务器被叫做BROKER,BROKER可以处理数千个分区以及每秒百万级别的消息量。由BROKER组成了“集群”(其中由集群控制器角色的BROKER是从成员中选举出来的,负责控制管理工作&#xf…

【ES6复习笔记】函数参数的默认值(6)

在ES6中,函数参数默认值是一个非常有用的特性,它允许你在定义函数时为参数指定一个默认值。如果在调用函数时没有提供相应的参数值,那么函数将使用默认值。 1. 形参初始值 具有默认值的参数,一般位置要靠后。这是一个潜规则&…

WebRtc webrtc-streamer部署

文章目录 本文档只是为了留档方便以后工作运维,或者给同事分享文档内容比较简陋命令也不是特别全,不适合小白观看,如有不懂可以私信,上班期间都是在得 WebRtc webrtc-streamer 部署 docker run -p 8000:8000 -it mpromonet/webrt…

Spring Boot中幂等性的应用

在 Spring Boot 中,幂等性是实现分布式系统设计和接口调用的一个重要概念,尤其在高并发、分布式环境下,确保接口重复调用不会引发系统数据异常至关重要。 幂等性概念 幂等性(Idempotence)是指一次请求和重复多次请求…

leetcode 7. 整数反转

class Solution { public: int reverse(int x) { long long n0; if(x0) return 0; while(x%100) { xx/10; } while(x!0) { nn*10x%10; xx/10; } if(n<-2147483648||n>2147483647) return 0; return n; } };