设计模式的原则与分类
一、设计模式的原则
1、单一职责原则
一个类只需要负责一种职责即可,一个类发生变化的原因,必然是所负责的职责发生变化
2、接口隔离原则
单一职责原则是接口隔离原则的基础,单一职责原则注重职责的划分,从职责角度进行类和接口的划分;接口隔离原则注重接口使用的 精确性 和 最小化
3、里氏替换原则
里氏替换原则是一种针对子类和父类关系的设计原则;子类需要实现父类中所有的抽象方法(为实现 替换 做好准备);子类可以加入自己的特有方法及属性;关于子类覆盖父类已实现方法(父类非抽象方法)的讨论
4、依赖倒置原则
依赖倒置原则是程序要依赖于抽象接口,不要依赖于具体实现。要求对抽象进行编程,不要对实现进行编程,简单地说就是 面向接口编程
5、迪米特法则
迪米特法则 又叫做最少知道原则,一个类对于其他类知道得越少越好,简单来说就是只暴露方法入口,而实现细节不需要暴露给调用者
6、开闭原则
开闭原则,开 是指对扩展开放,闭 是指对修改关闭。如果要修改一个功能,不是直接进行内部的代码修改,而是使用扩展的方式进行
二、设计模式的分类
1、创建型模式
创建型模式以 是否创建对象 为依据进行划分
- 工厂方法模式
- 抽象工厂模式
- 单例模式
- 建造者模式
- 原型模式
2、结构型模式
结构型模式,更加注重类或对象的结合方式,将类或对象进行结合,形成一个更大的结构,在该结构下,不同的组件扮演不同的角色
- 适配器模式
- 桥接模式
- 装饰模式
- 组合模式
- 外观模式
- 享元模式
- 代理模式
3、行为型模式
行为模式更加注重设计模式所体现出的行为动作
- 策略模式
- 模板方法模式
- 观察者模式
- 迭代模式
- 责任链模式
- 命令模式
- 备忘录模式
- 状态模式
- 访问者模式
- 中介者模式
- 解释器模式
相关文章:
设计模式的原则与分类
一、设计模式的原则 1、单一职责原则 一个类只需要负责一种职责即可,一个类发生变化的原因,必然是所负责的职责发生变化 2、接口隔离原则 单一职责原则是接口隔离原则的基础,单一职责原则注重职责的划分,从职责角度进行类和接口…...

在ubuntu虚拟机中手动安装VMware Tools(VMware Workstation 17 player)
可参考官方文档:在 Linux 虚拟机中手动安装 VMware Tools 以下列出我在安装过程中遇见的问题: 1、“安装VMware Tools”选项为灰,无法选中 原因是VMware Tools的安装包镜像在Player的安装目录下,需要在虚拟机启动的时候加载这个…...

十个数据安全最佳实践:保护数据的简单方法
在德迅云安全将介绍数据安全的主要原则,并了解适用于大多数行业的 10 种数据安全最佳实践,以及云端安全检测的重要性。 数据威胁和维护数据安全的好处 什么是数据安全? 数据安全是旨在保护组织敏感资产的流程和工具的组合。有价值的数据在…...
【leetcode】二分搜索题目总结
704. 二分查找 class Solution { public:int search(vector<int>& nums, int target) {int left 0, right nums.size() - 1;while (left < right) {int mid left (right - left) / 2;if (nums[mid] target) {return mid;} else if (nums[mid] < target) …...

六西格玛项目的核心要素:理论学习、实践应用与项目经验
许多朋友担心,没有项目经验是否就意味着无法考取六西格玛证书。针对这一疑问,张驰咨询为大家详细解答。 首先,需要明确的是,六西格玛项目不仅仅是一种管理工具或方法,更是一种追求卓越、持续改进的思维方式。它强调通…...
21-ESP32-S3实时时钟(RTC)
ESP32-S3实时时钟(RTC)的使用 ESP32-S3是一款高性能的Wi-Fi和蓝牙集成的系统级芯片(SoC),它包含一个实时时钟(RTC)模块,可以在系统的其他部分关闭时继续运行,以节省电能…...

17.接口自动化学习-日志
1.日志输出渠道 (1)文件格式 xx.log (2)控制台输出 2.日志级别 debug<info<warnning<error<critical 3.代码实现 from utils.handle_path import log_path import logging import datetime def logger(fileLogTr…...
python直接发布到网站wordpress之二发布图片
在我的上一篇文章中已经给出了python操作wordpress的环境和发布文字的教程: python直接发布到网站wordpress之一只发布文字-CSDN博客 本篇实现发布带图片的内容,无图无真相嘛。 直接上代码: from wordpress_xmlrpc.methods.media import …...

Messari 报告摘要 :Covalent Network(CQT)2024 年第一季度表现
摘要: 尽管 CQT 代币流通供应量增加了 20%(新增 1.04 亿枚 CQT),但 CQT 的质押百分比仅从 2023 年第一季度的 22% 增长到了 2024 年第一季度的 29%。 CQT 的市值季度环比增长了 28%,多次达到 2.75 亿美元,…...

PGP加密技术:保护信息安全的利器
随着数字化时代的到来,个人和企业对信息安全的需求日益增长。PGP(Pretty Good Privacy)加密技术作为一项强大的加密工具,为保护敏感数据提供了一种有效的方法。本文将探讨PGP加密技术的基本原理、应用场景以及其在现代信息安全中的…...

【C++】文件
目录 文件文件分类文本文件的读写(ASCII文件)的读写打开文件打开文件的方式关闭文件将数据写入ASCII文件从ASCII文件读入数据 二进制存储对比ASCII和二进制存储用成员函数read和write读写二进制文件打开方式文件的读入与读出 文件 所谓文件,一般指存储在外部介质上…...

uniapp离线在Xcode上打包后提交审核时提示NSUserTrackingUsageDescription的解决方法
uniapp离线在Xcode上打包后提交审核时提示NSUserTrackingUsageDescription的解决方法 问题截图: 亲测有效的方法 方法一: 选择通过uniapp的开发工具Hbuilder来进行在线打包,取消默认勾选的以下选项。 然后进行在线打包就不会存在提交审…...

【Linux】进程exec函数族以及守护进程
一.exec函数族 1.exec函数族的应用 在shell下敲shell的命令都是在创建shell的子进程。而我们之前学的创建父进程和子进程代码内容以及通过pid与0的关系来让父子进程执行不同的代码内容都是在一个代码文件里面,而shell是如何做到不在一个文件里面写代码使之成为子进…...

为什么 ChatGPT 不火了?
不火了是有原因的,下面我来从大部分人拿到 ChatGPT 之后的两大痛点开始讲起: 很多朋友拿到 ChatGPT 后的第一个痛点就是:用的不好 你经常会感觉到 ChatGPT 回答的好空,没有太多参考价值。 而第二个痛点则是:无处去用…...

Ubuntu22.04下安装kafka_2.11-0.10.1.0并运行简单实例
目录 一、版本信息 二、安装Kafka 1.将Kafka安装包移到下载目录中 2.下载Spark并确保hadoop用户对Spark目录有操作权限 三、启动Kafka并测试Kafka是否正常工作 1.启动Kafka 2.测试Kafka是否正常工作 一、版本信息 虚拟机产品:VMware Workstation 17 Pro 虚…...
【S32K3 MCAL配置】-7.2-GPT Driver:仿OS,周期/定时调用APP SWC和BSW模块的主函数
"><--返回「Autosar_MCAL高阶配置」专栏主页--> 案例背景:当没有移至FreeRTOS时,如何仿OS,快速搭建“若干个周期执行的Task”,在其中周期/定时调用APP SWC和BSW模块的主函数。 并在这个简易的仿OS中,如何设置“主函数调用的先后顺序”,以及如何设置“主函…...
golang内置包里面的sort.Slice 切片排序函数使用示例
go语言里面用的最多的数据类型应该是切片Slice了, 今天就给大家介绍这个go内置包里面的切片排序函数的使用方法 函数原型 func Slice(x any, less func(i, j int) bool) 参数说明 这个函数有2个参数, 第一个是你要进行排序的slice切片,地个…...

Golang | Leetcode Golang题解之第70题爬楼梯
题目: 题解: func climbStairs(n int) int {sqrt5 : math.Sqrt(5)pow1 : math.Pow((1sqrt5)/2, float64(n1))pow2 : math.Pow((1-sqrt5)/2, float64(n1))return int(math.Round((pow1 - pow2) / sqrt5)) }...

区块链 | NFT 相关论文:Preventing Content Cloning in NFT Collections(三)
🐶原文: Preventing Content Cloning in NFT Collections 🐶写在前面: 这是一篇 2023 年的 CCF-C 类,本博客只记录其中提出的方法。 F C o l l N F T \mathbf{F_{CollNFT}} FCollNFT and Blockchains with Native S…...

Unity技术学习:渲染大量物体的解决方案,外加RenderMesh、RenderMeshInstanced、RenderMeshIndirect的简单使用
叠甲:本人比较菜,如果哪里不对或者有认知不到的地方,欢迎锐评(不玻璃心)! 导师留了个任务,渲染大量的、移动的物体。 寻找解决方案: 当时找了几个解决方案: 静态批处…...
浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)
✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义(Task Definition&…...

VB.net复制Ntag213卡写入UID
本示例使用的发卡器:https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...

【大模型RAG】Docker 一键部署 Milvus 完整攻略
本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装;只需暴露 19530(gRPC)与 9091(HTTP/WebUI)两个端口,即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...

抖音增长新引擎:品融电商,一站式全案代运营领跑者
抖音增长新引擎:品融电商,一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中,品牌如何破浪前行?自建团队成本高、效果难控;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...
python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)
更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...
数据库分批入库
今天在工作中,遇到一个问题,就是分批查询的时候,由于批次过大导致出现了一些问题,一下是问题描述和解决方案: 示例: // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...
JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案
JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停 1. 安全点(Safepoint)阻塞 现象:JVM暂停但无GC日志,日志显示No GCs detected。原因:JVM等待所有线程进入安全点(如…...
【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)
1.获取 authorizationCode: 2.利用 authorizationCode 获取 accessToken:文档中心 3.获取手机:文档中心 4.获取昵称头像:文档中心 首先创建 request 若要获取手机号,scope必填 phone,permissions 必填 …...

零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)
本期内容并不是很难,相信大家会学的很愉快,当然对于有后端基础的朋友来说,本期内容更加容易了解,当然没有基础的也别担心,本期内容会详细解释有关内容 本期用到的软件:yakit(因为经过之前好多期…...
蓝桥杯 冶炼金属
原题目链接 🔧 冶炼金属转换率推测题解 📜 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V,是一个正整数,表示每 V V V 个普通金属 O O O 可以冶炼出 …...