设计模式-三大分类

软件七大设计原则

1、单一职责

定义:每个类应该只有一个引起它变化的原因。

解释:一个类只负责一个功能,这样可以减少类之间的耦合,提高系统的可维护性和可扩展性。

2、开闭原则

定义:软件实体(类、模块、函数等)应该对扩展开放,对修改关闭。

解释:应通过扩展来实现新的功能,而不是通过修改现有代码来实现,这样可以减少引入新的错误。

3、里式替换原则

定义:子类对象必须能够替换父类对象,并且不会导致程序出错。

解释:子类应当能够替换其父类,且子类行为应与父类一致,这样才能保证系统的正确性和稳定性。

4、依赖倒转原则

定义:高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节,细节应该依赖抽象。

解释:通过依赖抽象(接口或抽象类)而不是具体实现,可以提高系统的灵活性和可扩展性。

5、接口隔离原则

定义:客户端不应该依赖于它不使用的接口。

解释:应当为每一个类提供专门的接口,而不应该强迫类去实现一些用不到的接口。

6、迪米特法则

定义:一个对象应当对其他对象有最少的了解,只与直接的朋友通信。

解释:减少对象之间的耦合,提高系统的可维护性。

7、合成复用原则

定义:优先使用组合而不是继承来实现代码复用。

解释:使用组合可以减少类之间的耦合,提高系统的灵活性。

三大类

一:创建者模式(5种)

1、单例模式

2、原型模式

3、工厂方法

4、抽象工厂

5、建造者

二:结构型模式(7种)

1、代理

2、适配器

3、桥接

4、装饰

5、外观

6、享元

7、组合

三:行为型模式(11种)

1、模版方法

2、策略

3、命令

4、职责链

5、状态

6、观察者

7、中介者

8、迭代器

9、访问者

10、备忘录

11、解释器

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

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

相关文章

使用Dockerfile构建镜像

通过基础镜像 centos:7,在该镜像中安装 jdk 和 tomcat 以后将其制作为一个新的镜像 mscentos:7 创建目录 mkdir -p /kong/docker/dockerfile编写 Dockerfile 文件 vim DockerfileDockerfile 文件内容如下: # 指明构建的新镜像是来自于 centos:7 基础…

广义可加模型和光滑曲线拟合的R代码

🏆本文收录于《CSDN问答解答》专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&…

jvm-并发-java基础-数据结构小测

这篇文章是一些练习题,答案后续更新。 请简述银行家算法 请简述死锁产生的条件 解决死锁的几种方式 简述synchronized锁的膨胀 什么是cas cas 的问题如何解决 jmm 简单理解 volatile 单例模式 线程安全的两种代码 懒汉&恶汉 线程池的7个参数分别是什么…

ABAQUS细观混凝土周期性边界(PBC)表征体元(REV)界面层(ITZ)及砂浆塑性损伤(CDP)模拟

混凝土的细观结构决定着其宏观破坏行为,对混凝土在结构尺度上采用细观模型将导致巨大的计算量而难以实现,表征体元(‌REV)‌方法可选取一定的平均范围来描述混凝土的性质和行为,这对于理解和模拟混凝土的损伤机理至关重…

构建高可用应用的设计模式与实践

高可用性(High Availability, HA)是现代分布式系统中必不可少的特性之一。高可用应用能够在面对系统故障、网络分区或资源压力等多种情况下,依然保证服务的连续性和稳定性。本文将介绍构建高可用应用的常见设计模式与实践,并提供J…

测试用例的设计方法

等价类 等价类概念:在所有测试的数据中,具有某种共同特征的数据子集 边界值 边界值分析是对程序输入或输出的边界值进行测试的一种黑盒测试方法 边界值是作为等价类的补充,其主要区别是: 边界值测试设计不是从某一个等价类中…

nacos注释配置未生效?

遇到的问题 Nacos中修改配置将配置的key 的注释,配置未发生变更问题 NacosValueAnnotationBeanPostPorcessor中有,获取key,是获取的所有注解上的值,而values是enviroment中的属性值 当我们注释掉nacos中的属性时,ke…

15. 【C++】详解搜索二叉树 | KV模型

目录 1.定义 初始化 插入 查找 删除 完整代码 2.运用 K 模型和 KV 模型详解 K 模型 KV 模型 代码解释 为了更好地理解 map 和 set 的特性,和后面讲解查找效率极高的平衡搜索二叉树,和红黑树去实现模拟,所以决定在这里对搜索二叉树…

Google资深工程师深度讲解Go语言-课程笔记

课程目录: 第1章 课程介绍 欢迎大家来到深度讲解Go语言的课堂。本课程将从基本语法讲起,逐渐深入,帮助同学深度理解Go语言面向接口,函数式编程,错误处理,测试,并行计算等元素,并带…

(vue)Vue读取public中的json文件,打包后只需更改包文件

(vue)Vue读取public中的json文件,打包后只需更改包文件 背景:增加账号需求。原本是在页面,每次都需技术人员添加再打包部署,现在放到json里,以后直接服务器改json就行。 旧版: let userArr [{username:aaa,password:…

VLAN 划分案例详解

vlan 的应用在网络项目中是非常广泛的,基本上大部分的项目都需要划分 vlan,这里从基础的 vlan 的知识开始,了解 vlan 的划分原理。 为什么需要 vlan: 1、什么是 VLAN? VLAN(Virtual LAN)&…

springboot 之 使用easyexcel导出数据时数据格式转换问题

背景 导出数据库中的数据,有些字段格式为LocalDateTime需要转化为String. 软件版本 springboot 2.7.17 easyexcel 3.0.5 代码 //实现相关接口,进行格式转化 import com.alibaba.excel.converters.Converter; import com.alibaba.excel.metadata.Globa…

Python数据分析实战:利用ARIMA模型洞察股市规律

在股市中,数据的波动与变化风云莫测,难以捉摸。然而,借助科学的分析方法和工具,我们或许能够找到一些数据规律。今天,我们聊聊如何使用Python编程语言,结合ARIMA模型来洞察股市的变幻,为我们的投…

精确控制Conda环境:使用conda install命令安装特定版本的包

精确控制Conda环境:使用conda install命令安装特定版本的包 在Python项目开发中,依赖管理是确保项目可复现性和稳定性的关键环节。Conda作为Anaconda发行版中的包管理器,提供了强大的依赖管理功能,允许用户安装和管理不同版本的包…

【TCP通信】

7.18学习记录 NetAssist.exeTCP/IP协议准备工作做好之后开始创建方案 通信架构设备管理接收事件发送事件心跳管理响应配置 VM4.0二次开发 NetAssist.exe 网络协议调试助手文件,支持UDP和TCP协议。只需要输入主机的地址和端口就能获取数据解析。要用到的协议是 TCP/…

wps office 2019 Pro Plus 集成序列号Vba安装版教程

前言 wps office 2019专业增强版含无云版是一款非常方便的办公软件,我们在日常的工作中总会碰到需要使用WPS的时候,它能为我们提供更好的文档编写帮助我们更好的去阅读PDF等多种格式的文档,使用起来非常的快捷方便。使用某银行专业增强版制作…

Python面试题:编写一个程序,实现一个简单的聊天机器人,主要的思路和方法是什么

编写一个简单的聊天机器人(Chatbot),可以通过以下步骤和方法实现: 定义问题和回答的映射:设计一些常见问题及其对应的回答。接受用户输入:获取用户的输入并进行处理。匹配用户输入:根据用户的输…

生活中生智慧

【 圣人多过 小人无过 】 觉得自己做得不够才能做得更好,互相成全;反求诸己是致良知的第一步;有苦难才能超越自己,开胸怀和智慧;不浪费任何一次困苦,危机中寻找智慧,成长自己。 把困苦当作当下…

Linux——awk操作符

[rootlocalhost ~] # awk BEGIN{x2;y3;print x**y,x^y,x*y,x/y,xy,x-y,x%y} 8 8 6 0 .666667 5 -1 2 赋值运算符 条件运算符 awk 中的条件运算符只有一个,其语法如下: expression?value1:value2 这是一个三目运算符,当表达式 expre…

特征交互的艺术:在sklearn中进行特征交互性建模

特征交互的艺术:在sklearn中进行特征交互性建模 在机器学习中,特征交互性建模是一种强大的技术,它可以帮助模型学习特征之间的复杂关系。通过这种方式,模型不仅能够捕捉单个特征的影响,还能够理解特征组合对目标变量的…