设计模式简述

news2025/1/31 11:04:06

设计模式(简述)

设计模式的分类

​ 根据目的可以分为创建型、结构性和行为型三类:

  • 创建型模型:创建对象
  • 结构性模型:处理类或对象的组合
  • 行为型模式:用于描述对类或对象怎样交互和怎么分派职责

​ 根据范围可以分为类模式和对象模式:

  • 类模式:处理类和子类之间的关系,这些关系通过继承建立,在编译时就确定了,属于静态
  • 对象模式:处理对象间的关系,这些关系在运行时变化,属于动态
    在这里插入图片描述

设计模式的设计原则

​ 设计模式有七大原则:开闭原则、里氏替换原则、依赖倒转原则、接口隔离原则、迪米特原则、合成复用原则、单一职责原则:

1.开闭原则

​ 对扩展开放,对修改关闭,是设计模式的核心原则,实现开闭原则的关键就是抽象化。

2.里氏替换原则

​ 所有引用基类的地方必须能够透明地使用其子类对象,即子类能够并且必须能够替换基类所出现的地方,子类也能在基类的基础上新增行为。即如果能够使用父类对象的时候一定可以替换并使用其子类对象,反过来不成立。

3.依赖倒转原则

​ 高层模块不应该依赖底层模块,他们都应该依赖抽象,抽象不应该依赖细节,细节应该依赖抽象,总的来说就是依赖倒转原则要求客户端依赖于抽象耦合。即:

  • 抽象不应该依赖细节,细节依赖抽象
  • 要针对接口编程,不针对实现编程

4.接口隔离原则

​ 客户端不应该依赖那些它不需要的接口,一旦一个接口太大,则需要将它分割成一些更细小的接口,使用接口的客户仅需要与之相关的方法即可。

5.迪米特原则

​ 又叫最少知识原则:

  • 不要和“陌生人”说话
  • 直接与你的“朋友”通信
  • 每一个软件单位对其他的单位都只有最少的知识,而且局限于那些与本单位密切相关的软件单位

​ 一个对象应该对其他对象有尽可能少的了解,一个类应该对自己需要耦合或调用的类知道的越少越好。

6.合成复用原则

​ 尽量使用对象组合,而不是继承来达到复用的目的。在一个新的对象中使用一些已有的对象,是之成为新对象的一部分,新对象通过向这些对象的委派达到服用已有功能的目的。简而言之,要尽量使用合成/聚合,尽量不要使用继承。

7.单一职责原则

​ 一个对象应该只包含单一的职责,并且该职责被完整地封装在一个类中。

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

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

相关文章

13.基于双层优化的电动汽车日前-实时两阶段市场竞标

MATLAB代码:基于双层优化的电动汽车日前-实时两阶段市场竞标 关键词:日前-实时市场竞标 电动汽车 双层优化 编程语言:MATLAB平台 内容简介:代码主要做的是电动汽车充电站市场竞标策略,采用双层优化模型对电动汽车…

Redis缓存穿透、击穿、雪崩面试题详解

缓存穿透 问题: 指的是客户端请求的数据在缓存中找不到,数据库中也没有存储,客户端还不断的发起请求。这样每次都无法在数据库查询到,缓存中永远没有这个数据。 ​ 这样的话,客户端一直去访问,会给后端数据…

【观察】解读新一代戴尔AMD服务器:场景优化为先,筑牢数字化底座

毫无疑问,今天算力就是生产力已成为业界共识,特别是算力作为数字经济时代的关键生产力要素,更成为了挖掘数据要素价值,推动数字经济发展的核心支撑力和驱动力。 在此过程中,由算力驱动的数字经济除了以信息产业这一独立…

老胡的周刊(第087期)

老胡的信息周刊[1],记录这周我看到的有价值的信息,主要针对计算机领域,内容主题极大程度被我个人喜好主导。这个项目核心目的在于记录让自己有印象的信息做一个留存以及共享。 🎯 项目 Auto-GPT[2] Auto-GPT 是一个实验性的开源应…

极简sklearn-使用决策树预测泰坦尼克号幸存者

泰坦尼克号幸存者数据集是kaggle竞赛中入门级的数据集,今天我们就来用决策树来预测下哪些人会成为幸存者。 数据集下载地址: https://download.csdn.net/download/ting4937/87630361 数据集中包含两个csv文件,data为训练用数据,test为测试集。 探索数据…

通过HBuilderX运行uniapp到微信者开发工具

目录 一、安装开发工具 二、配置运行微信开发者工具 三、异常处理 1.[微信小程序开发者工具] ? Enable IDE Service (y/N) [27D[27C 2. [error] Error: Fail to open IDE 3.[app.json 文件内容错误] app.json: 在项目根目录未找到 app.json 一、安装开发工具 安装HBuil…

如今的就业环境下,怎样才能跻身于高收入的IC行业?

看到不少人失业找工作,其实现在不光是大学生难找工作,在职的人工作也不怎么开心。 要么累,要么没前途。 要么又累又没前途。 总的占个啥吧,现在大家面临的问题就是工作时间越来越久,人际关系也搞得很压抑&#xff0…

初识linux之线程同步与生产者消费者模型

目录 一、线程同步的概念 1. 饥饿状态 2. 同步的概念 二、生产者消费者模型 1. 生产者消费者模型基本概念 2. 生产者、消费者之间的关系 2.1 消费者与消费者的关系 2.2 生产者和生产者的关系 2.3 生产者和消费者的关系 3. “321”原则 4. 消费者与生产者模型的特点 …

C++数据结构:STL

数据结构和算法简介 数据结构 数据结构是相互间存在特定关系的数据的集合,分为逻辑结构和物理结构。 逻辑结构 反映数据元素之间的逻辑关系的数据结构,其中的逻辑关系是指数据元素之间的前后件关系,而与他们在计算机中的存储位置无关 集…

类加载器详解(重点)之双亲委派

回顾一下类加载过程 开始介绍类加载器和双亲委派模型之前,简单回顾一下类加载过程。 类加载过程:加载->连接->初始化。连接过程又可分为三步:验证->准备->解析。 加载是类加载过程的第一步,主要完成下面 3 件事情…

多线程基础

1.多线程基础概念 多线程:让程序同时做多件事情 多线程作用:提高效率 并发:在同一时间,有多个指令在单个cpu上交替执行 并行:在同一时刻,有多个指令在多个cpu上同时执行 2.多线程的实现 (1)继承Thread类…

计算机网络问题

1.网络分层结构及其必要性 五层体系结构: 七层结构: 应用层:网络服务与最终用户的一个接口,常见的协议有:HTTP FTP SMTP SNMP DNS.表示层:数据的表示、安全、压缩。,确保一个系统的应用层所发…

『Linux笔记』Linux设置SSH远程连接Docker容器

Linux设置SSH远程连接Docker容器 文章目录 一. 创建容器二. 进入容器/设置密码三. 安装ssh及修改配置四. 重启ssh服务五. 远程连接六. 提交运行中的容器docker commit参考文章 一. 创建容器 在ubuntu镜像中创建容器,并将docker服务器的60222端口映射到容器的22端口…

如何将Tomcat集成到IDEA中并启动项目?

编译软件:IntelliJ IDEA 2019.2.4 x64 操作系统:win10 x64 位 家庭版 服务器软件:apache-tomcat-8.5.27 目录一、为什么要将Tomcat集成到IDEA里?二、集成步骤2.1 在IDEA中创建Tomcat2.2 创建java的企业级模块(动态的we…

同为科技(TOWE)8路RS485通讯智能机柜PDU时序电源管理器

智能PDU电源时序管理器的出现是为了更好地管理数据中心和服务器机房的电源,以提高其可靠性和效率。在传统的机房电力管理中,运维人员需要手动控制每个设备的电源开关和电力分配,这种方式不仅效率低下,而且容易出现操作失误和电源供…

记一次mysql cpu 异常升高100%问题排查

此服务器为一个从库,用于数据的导出业务,服务器配置较低,日常的慢sql也比较多。 上午11点左右cpu异常告警,如下图所示, cpu使用率突增到50%,下午2点左右突增到100% ,登录服务器top命令查看cpu升…

基于脚手架@vue/cli 5.0.8搭建vue3项目教程

基于脚手架vue/cli 5.0.8搭建vue3项目教程 前言 前言 脚手架可以快速的帮我们搭建一个项目,而不需要我们从头开始去配置和引入插件,使用脚手架5.0.8版本创建的项目,局部webpack是5.x版本的,因此所有的配置均需要使用支持5.x版本的…

Shader Graph11-Detail Normal Map(法线贴图叠加)

本次我们希望通过叠加两个法线贴图来增加细节。 一、准备资源 我们需要一个模型,1张纹理贴图,2张法线贴图 我们可以在商店下载,这个mesh资源来做这个例子 打开OldWest->VOL3->Meshes,找到SM_Blankets_01c这个布的模型&am…

QoS技术原理

QoS技术的产生 随着网络的不断发展,网络规模及流量类型的不断增加,使得互联网流量激增,产生网络拥塞,增加转发时延,严重时还会产生丢包,导致业务质量下降甚至不可用。所以,要在IP网络上开展这些…

Abaqus 2022最新版下载软件安装包 永久安装包详细安装流程

Abaqus 2022是一套功能强大的工程模拟的有限元软件,其解决问题的范围从相对简单的线性分析到许多复杂的非线性问题。Abaqus包括一个丰富的、可模拟任意几何形状的单元库。并拥有各种类型的材料模型库,可以模拟典型工程材料的性能,其中包括金属…