当前位置: 首页 > news >正文

23种设计模式汇总详解

设计原则

中文名称英文名称含义解释
单一职责原则Single Responsibility Principle(SRP)任何一个软件模块都应该只对某一类行为者负责一个类只干一件事,实现类要单一
开闭原则Open-Close Principle(OCP)软件实体(类、模块、函数等)应该是可以扩展的,但是不可以修改对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果
里氏代换原则Liskov Substitution Principle(LSP)子类型必须能够替换掉他们的基类型,且不改变原有逻辑实现开闭原则的关键步骤就是抽象化,而基类与子类的继承关系就是抽象化的具体实现,所以里氏代换原则是对实体抽象化的具体步骤的规范。
接口隔离原则Interface Segregation Principle(ISP)接口应该是内聚的,不应该强迫客户依赖他们不用的方法使用多个隔离的接口,比使用单个接口要好
依赖倒转原则Dependency Inversion Principle(DIP)高层模块不应该依赖底层模块,二者都应该依赖于抽象;抽象不应该依赖于细节,细节应该依赖于抽象针对接口编程,依赖于抽象而不依赖于具体
迪米特法则Demeter Principle(DP)一个实体应当尽量少的与其他实体之间发生相互作用,使得系统功能模块相对独立最少知道原则
合成复用原则Composite Reuse Principle(CRP)尽量使用组合(contains-a)、聚合(has-a)的方式而不是继承(is-a)的关系来达到软件复用的目的类之间的耦合度较低,一个类的变动对其他类的影响较小

设计模式详解

创建型设计模式

序号设计模式一句话概括详解
1工厂模式产品标准化,生产更高效工厂模式
抽象工厂模式
2单例模式世上只有一个我单例模式
3原型模式拔一根猴毛,吹出猴万个待补充
4建造者模式高配中配和低配,想怎么配就怎么配建造者模式

结构型设计模式

序号设计模式一句话概括详解
1代理模式没有资源没有时间,得找别人来帮忙代理模式
2外观模式打开一扇门,通向全世界外观模式
3装饰器模式他大舅他二舅都是他舅装饰器模式
4享元模式优化资源配置,减少重复浪费待补充
5组合模式人在一起叫团伙,心在一起叫团队组合模式
6适配器模式万能充电器适配器模式
7桥接模式约定优于配置待补充

行为型设计模式

序号设计模式一句话概括详解
1策略模式条条大路通罗马,具体哪条你来定策略模式
2模板模式流程全部标准化,需要微调请覆盖模板模式
3责任链模式各人自扫门前雪,莫管他们瓦上霜责任链模式
4观察者模式到点就通知我观察者模式
5迭代器模式流水线上坐一天,每个包裹扫一遍迭代器模式
6命令模式运筹帷幄之中,决胜千里之外命令模式
7状态模式状态驱动行为,行为决定状态状态模式
8备忘录模式失足不成千古恨,想重来时就重来待补充
9中介者模式联系方式我给你,怎么搞定我不管待补充
10解释器模式我想说“方言”,一切解释权都归我待补充
11访问者模式横看成岭侧成峰,远近高低各不同待补充
12委派模式这个需求很简单,怎么实现我不管待补充

23种设计模式思维导图

23种设计模式详解

相关文章:

23种设计模式汇总详解

设计原则 中文名称英文名称含义解释单一职责原则Single Responsibility Principle(SRP)任何一个软件模块都应该只对某一类行为者负责一个类只干一件事,实现类要单一开闭原则Open-Close Principle(OCP)软件实体(类、模块、函数等)应该是可以扩…...

stream流的filter和map过滤

详情页面 // 过滤出身高大于 170 的记录 personList.stream().filter((item)->item.getHeight() > 170).forEach(System.out::println);//从对象中提取age。并过滤年龄 List<Integer> nameListstudentList.stream().map(StudentInfo::getAge).filter(f->f>…...

Linux 环境下使用 Docker 部署 Seata 1.7.1 (图文教程)

目录 前言环境准备创建数据库安装 Seata下载镜像自定义配置文件自定义配置启动 Seata 开源项目微服务商城项目 前后端分离项目联系我 前言 本篇参考 Seata 官方部署文档 在 Linux 环境通过 Docker 部署 Seata 1.7.1 版本&#xff0c;以及为 youlai-mall 开源商城版本的升级做…...

Aruba CX交换机 VSF配置

目前 Aruba CX 交换机中的 6300F 和 6300M 支持 VSF 功能&#xff0c;要求同型号堆叠。 6300 交换机仅仅最后 4 个 SFP56 端口支持 VSF link 6200F : all uplink ports with 10G speed can be configured as VSF link 6200F: VSF allows stacks to be formed using any combin…...

使用ElementUI结合Vue完善主页的导航菜单和书籍管理以及后台数据分页查询

目录 动态树 数据表 案列 书籍管理 动态树 动态树&#xff08;Dynamic tree&#xff09;是一种数据结构&#xff0c;它可以在树中动态地插入、删除和修改节点。与静态树不同&#xff0c;静态树的节点是固定的&#xff0c;一旦构建完成就无法再进行修改。而动态树可以在运行时…...

子序列问题集合

子序列问题 删除一次得到的最大和最大子数组和最长公共子序列&#xff1a;最长上升子序列&#xff08;要输出序列&#xff0c;和最大长度&#xff09;1.dp2.贪心二分 导弹拦截 &#xff08;最长上升/下降子序列长度&#xff09; 删除一次得到的最大和 class Solution { public:…...

idea中提示:error has occurred, please check your installation and try again

目录 报错原因解决总结 报错 idea中提示&#xff1a;error has occurred, please check your installation and try again 原因 1.起初我是把一个运行正常的java程序&#xff0c;放到了src下&#xff0c;新建的一个包&#xff08;包名为java.first&#xff09;中&#xff0c…...

MySQL - 关于约束类型和作用的介绍

约束的概念&#xff1a;约束是作用于表中字段上的规则&#xff0c;用于限制存储在表中的数据。 约束的作用&#xff1a;用于保证数据库中数据的正确性、完整性和一致性。 约束分类&#xff1a; 约束类型作用关键字非空约束限制该字段的数据不能为nullnot null唯一约束保证该…...

【2023集创赛】芯原杯一等奖作品:基于芯原DSP核的智能语音SoC设计

本文为2023年第七届全国大学生集成电路创新创业大赛&#xff08;“集创赛”&#xff09;芯原杯一等奖作品分享&#xff0c;参加极术社区的【有奖征集】分享你的2023集创赛作品&#xff0c;秀出作品风采&#xff0c;分享2023集创赛作品扩大影响力&#xff0c;更有丰富电子礼品等…...

代理IP与Socks5代理在跨界电商、爬虫、游戏和网络安全中的应用

在数字化时代&#xff0c;网络工程师们需要不断应对各种技术挑战&#xff0c;以满足跨界电商、爬虫、游戏和网络安全领域的需求。本文将聚焦于代理IP和Socks5代理&#xff0c;探讨它们在这些领域中的重要应用和影响。 1. 代理IP&#xff1a;跨越地域的电商战略 跨界电商已经成…...

DDS信号发生器Verilog波形发生器FPGA

名称&#xff1a;DDS信号发生器Verilog波形发生器 软件&#xff1a;Quartus 语言&#xff1a;Verilog 要求&#xff1a; 1.可产生正弦波&#xff0c;锯齿波&#xff0c;三角波&#xff0c;方波4种波形&#xff0c;频率可调 2.具有波形选择、起动、停止功能。 代码下载&…...

基于springboot实现二手交易平台管理系统演示【项目源码】分享

基于springboot实现二手交易平台管理系统演示 java简介 Java语言是在二十世纪末由Sun公司发布的&#xff0c;而且公开源代码&#xff0c;这一优点吸引了许多世界各地优秀的编程爱好者&#xff0c;也使得他们开发出当时一款又一款经典好玩的小游戏。Java语言是纯面向对象语言之…...

一个链接分享自制的产品图册

​在商业中我们都需要一本产品册展现自家的产品特点&#xff0c;方便更多的人群挑选产品。但是纸质版的消费量最大&#xff0c;还不好存放和管理。不妨试试制作一本电子版的产品图册&#xff0c;无论是新手还是有经验者都能轻松上手 接下来给大家分享这款网站---FLBOOK在线制作…...

2023工博会 | 上海添力网络营销公司 | 助力工业品线上推广

2023年9月23日&#xff0c;为期五天的工博会正式落下帷幕。本届工博会不仅有数量&#xff0c;更加有质量&#xff0c;国内外企业纷纷拿出看家本领&#xff0c;围绕着“绿色低碳”、“数字化转型”、“数字经济”、“科技创新”、“智能制造”等主题进行推陈出新。 本次工博会也…...

React实现多图片预览功能、预览图上下张切换(实战示例)

前言 在React项目中&#xff0c;展示和预览多张图片是一种常见的需求。本篇帖子将介绍如何使用React和antd库来实现这一功能&#xff0c;并探讨如何在预览模态框中切换到前一张或后一张图片。 背景 我们将以一个OCR图像列表展示的示例来演示代码的运用。假设我们有一个OCR系…...

【NLP的Python库(04/4)】:Flair

一、说明 Flair是一个现代的NLP库。从文本处理到文档语义&#xff0c;支持所有核心 NLP 任务。Flair使用现代转换器神经网络模型来完成多项任务&#xff0c;并结合了其他Python库&#xff0c;可以选择特定的模型。其清晰的API和注释文本的数据结构&#xff0c;以及多语言支持&a…...

Vue框架学习大纲

Vue.js 是一个构建用户界面的框架&#xff0c;尤其是单页面应用。以下是一些主要基于 Vue 2.x 的版本必须了解的 Vue.js基本知识点和特性&#xff1a; Vue 实例: 创建一个 Vue 实例是开始使用 Vue 的第一步。 var vm new Vue({// 选项 });数据绑定: Vue 提供了非常直观的数据绑…...

利用PPT导出一张高清图的方法,office与WPS只需要使用一个即可,我使用的是office。

利用PPT导出一张高清图的方法&#xff0c;office与WPS只需要使用一个即可&#xff0c;我使用的是office。 1&#xff0c;PPT的功能拓展来解决导出高清图片方法1.1&#xff0c;PPT功能拓展—>安装插件&#xff1a; 2&#xff0c;各种方法导出图片效果显示&#xff1a;2.1&…...

2023年【四川省安全员B证】最新解析及四川省安全员B证模拟考试

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 四川省安全员B证最新解析考前必练&#xff01;安全生产模拟考试一点通每个月更新四川省安全员B证模拟考试题目及答案&#xff01;多做几遍&#xff0c;其实通过四川省安全员B证模拟考试题很简单。 1、【多选题】5.5kW…...

某瑞集团安全技术研发岗位面试

本文由掌控安全学院 - sbhglqy 投稿 一、自我介绍 阿吧阿吧&#xff0c;不多说 二、就ctf比赛经历方面提些问题 面试官&#xff1a;ctf打了多久了 我&#xff1a;两三年了。 面试官&#xff1a;得过什么奖项没有 我&#xff1a;本科的时候得过一个校一等奖。 面试官&#x…...

突破CPU瓶颈:1-bit大模型推理框架3大创新解析

突破CPU瓶颈&#xff1a;1-bit大模型推理框架3大创新解析 【免费下载链接】BitNet 1-bit LLM 高效推理框架&#xff0c;支持 CPU 端快速运行。 项目地址: https://gitcode.com/GitHub_Trending/bitne/BitNet BitNet作为微软推出的1-bit大语言模型推理框架&#xff0c;通…...

机场接送机哪个APP便宜?2026年实测告诉你答案

作品声明&#xff1a;个人观点、仅供参考。深夜落地浦东机场&#xff0c;拖着行李箱走向网约车候车区&#xff0c;抬头一看——溢价2.3倍&#xff0c;排队人数67人。这是今年3月初一位旅客的真实经历&#xff0c;在社交媒体上引发了不少共鸣。随着2026年民航出行持续升温&#…...

GPT-4o 新手入门指南:从零开始构建你的第一个智能对话应用

GPT-4o 新手入门指南&#xff1a;从零开始构建你的第一个智能对话应用 作为一名刚接触大模型开发的程序员&#xff0c;面对 GPT-4o 这样的新工具&#xff0c;你是不是既兴奋又有点无从下手&#xff1f;看着官方文档里一堆 API 参数&#xff0c;想着怎么管理好几轮对话的上下文…...

Next.js + Drizzle ORM 全流程终极指南

&#x1f4d6; 目录 &#x1f3d7;️ 全局架构逻辑图 (新增)前置准备&#xff1a;依赖安装核心配置&#xff1a;drizzle.config.ts (必填项检查)环境与安全&#xff1a;.env 与 .gitignoreTypeScript 增强&#xff1a;tsconfig.json 路径别名定义模型&#xff1a;db/schema.ts…...

Instagram数据提取完全指南:Toutatis实战揭秘与高效应用

Instagram数据提取完全指南&#xff1a;Toutatis实战揭秘与高效应用 【免费下载链接】toutatis Toutatis is a tool that allows you to extract information from instagrams accounts such as e-mails, phone numbers and more 项目地址: https://gitcode.com/GitHub_Trend…...

5步掌握PrusaSlicer:新手从零到高质量3D打印的完整指南

5步掌握PrusaSlicer&#xff1a;新手从零到高质量3D打印的完整指南 【免费下载链接】PrusaSlicer G-code generator for 3D printers (RepRap, Makerbot, Ultimaker etc.) 项目地址: https://gitcode.com/gh_mirrors/pr/PrusaSlicer 想要开始3D打印却不知从何下手&#…...

Vue Toast组件:轻量级通知解决方案的无侵入式集成实践

Vue Toast组件&#xff1a;轻量级通知解决方案的无侵入式集成实践 【免费下载链接】vue-sonner &#x1f514; An opinionated toast component for Vue. 项目地址: https://gitcode.com/gh_mirrors/vu/vue-sonner 在现代Web应用开发中&#xff0c;用户交互反馈是提升体…...

专精特新企业品牌升级实操:把技术专长转换成客户敢选的购买理由

最容易做错的一步&#xff0c;不是没做&#xff0c;而是把“专精特新企业品牌升级”做成了换壳&#xff1a;标题换了&#xff0c;结构没换&#xff1b;字数变了&#xff0c;判断逻辑没变。一、问题定义很多专精特新企业都会遇到一种很委屈的状态&#xff1a;客户见完之后说“你…...

Ubuntu下Boost库的安装与卸载:从源码编译到包管理的双路径解析

1. Boost库简介与安装方式选择 Boost是C开发者绕不开的一个重量级工具库&#xff0c;它就像瑞士军刀一样提供了从智能指针到多线程处理的各类组件。我在实际项目中使用Boost超过8年&#xff0c;遇到过各种安装方式带来的"酸甜苦辣"。在Ubuntu系统下&#xff0c;主要有…...

AnimateDiff开源贡献:PyTorch核心代码解读与修改

AnimateDiff开源贡献&#xff1a;PyTorch核心代码解读与修改 1. 引言 如果你对AI视频生成感兴趣&#xff0c;可能已经听说过AnimateDiff这个强大的文生视频框架。它能够将静态的文字描述转化为生动的视频内容&#xff0c;效果相当惊艳。但你是否想过&#xff0c;这个看似神秘…...