【设计模式】设计原则和常见的23种经典设计模式

设计模式

1. 设计原则(记忆口诀:SOLID)【记忆口诀:单开里依接迪合(单开礼仪接地和)】
(1)单一职责原则(Single Responsibility Principle, SRP)
(2)开闭原则(Open-Closed Principle, OCP)
(3)里氏替换原则(Liskov Substitution Principle, LSP)
(4)依赖倒置原则(Dependence Inversion Principle, DIP)
(5)接口隔离原则(Interface Segregation Principle, ISP)
(6)迪米特法则(最少知道原则)(Law of Demeter, LoP)
(7)合成复用原则(Composite Reuse Principle, CRP)
2. 常见的23种经典设计模式
2.1 创建型模式(5种)【记忆口诀:创工抽单建原(床工臭蛋减员)】
(1)工厂模式(Factory Pattern)
(2)抽象工厂模式(Abstract Factory Pattern)
(3)单例模式(Singleton Pattern)
(4)建造者模式(Builder Pattern)
(5)原型模式(Prototype Pattern)
2.2 结构型模式(7种)【记忆口诀:结适装代外桥组享(解释装袋外侨租箱)】
(1)适配器模式(Adapter Pattern)
(2)装饰器模式(Decorator Pattern)
(3)代理模式(Proxy Pattern)
(4)外观模式(Facade Pattern)
(5)桥接模式(Bridge Pattern)
(6)组合模式(Composite Pattern)
(7)享元模式(Flyweight Pattern)
2.3 行为型模式(11种)【记忆口诀:行策模观迭责命备状访中解(行测暮光蝶这名被撞房中介)】
(1)策略模式(Strategy Pattern)
(2)模板模式(Template Pattern)
(3)观察者模式(Observer Pattern)
(4)迭代器模式(Iterator Pattern)
(5)责任链模式(Chain of Responsibility Pattern)
(6)命令模式(Command Pattern)
(7)备忘录模式(Memento Pattern)
(8)状态模式(State Pattern)
(9)访问者模式(Visitor Pattern)
(10)中介者模式(Mediator Pattern)
(11)解释器模式(Interpreter Pattern)

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

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

相关文章

使用Docker实现Jenkins+Python + Pytest +Allure 接口自动化

一、Jenkins搭建 参考《Docker 安装 Jenkins》 进入 jenkins 容器 CLI 界面 docker exec -itu root jenkins /bin/bash二、准备条件 1、替换镜像内源 为了安装wget,默认用yum会安装不上wget命令,参考文章《docker容器内如何更换yum源【只想换成国内…

使用Vite构建Vue3+TypeScript项目

1,新建项目前,确保电脑 已经安装Node.js,pnpm 在本地新建一个文件夹 ,在文件路径输入cmd 如下展示 2,执行如下指令搭建项目 filename,即搭建的项目名称。 pnpm create vitelatest filename 输入指令按回车之后如下…

Promise.all 静态方法

Promise.all 静态方法 概念:合并多个 Promise 对象,等待所有同时成功完成(或某一个失败),做后续逻辑 语法 const p Promise.a11([Promise对象,Promise对象,...]) p.then(result > { // result结果: [Promise对象成功结果&…

Java HashMap 和 HashSet 的高效使用技巧

Java HashMap HashMap 是一种哈希表,它存储键值对。键用于查找值,就像数组中的索引一样。HashMap 的优势在于它可以使用任何类型作为键,并且查找速度很快。 创建 HashMap // 导入 HashMap 类 import java.util.HashMap;public class Main …

前端在浏览器端播放直播流协议的方式

直播流协议2种:.flv后缀是http-flv协议,.m3u8后缀是hls协议 一、播放.m3u8 1、hls.js HLS (HTTP Live Streaming)是Apple公司研发的流媒体传输技术,包括一个m3u8的索引文件、多个ts分片文件和key加密串文件。这项技术主要应用于点播和直播…

畅享精酿啤酒与意式面包的简单美味

在忙碌的生活中,我们时常渴望寻找那份简单的美好。而Fendi Club啤酒与意式面包的搭配,正是这种美好体验的代表。它们以其简洁的味道和口感,成为了无数人心中的佳品。 Fendi Club啤酒,以其醇厚的口感和细腻的泡沫,成为了…

PL/SQL学习笔记

介绍 PL/SQL 编程语言是SQL 和 Oracle 关系数据库的过程扩展语言 是Oracle 编程环境中的一个工具 基本语法 S.No Sections & Description 1 Declarations 此部分以关键字 DECLARE 开头。 它是一个可选部分,定义了程序中要使用的所有变量、游标、子程序和其他…

Milvus的相似度指标

官网:https://milvus.io/docs/metric.md版本: v2.3.x 在 Milvus 中,相似度度量用于衡量向量之间的相似度。选择良好的距离度量有助于显着提高分类和聚类性能。下表展示了这些广泛使用的相似性指标如何与各种输入数据形式和 Milvus 索引相匹配。 一、浮…

如何用Python实现转行高薪梦?三个热门方向带你入门

Python是一门非常适合转行的编程语言,它有着丰富的应用场景和学习资源,而且语法简单易懂,学习效率高。如果你想要用Python实现转行梦想,那么你可能会问,Python有哪些热门的工作方向?小编这就为你介绍Python…

js【详解】DOM

文档对象模型(Document Object Model,简称DOM) DOM 是哪种数据结构 ? DOM 的本质是浏览器通过HTML代码解析出来的一棵 树。 操作 DOM 常用的 API 有哪些 ? 获取 DOM 节点 //方式 1:通过【id】获取&#xf…

啤酒:精酿啤酒与三明治的快捷搭配

在快节奏的现代生活中,人们总是追求简单、快捷的美食。而Fendi Club啤酒与三明治的搭配,正是满足了这一需求。它们以其方便的制作方式和美味的口感,成为了无数人的心头好。 Fendi Club啤酒,以其醇厚的口感和细腻的泡沫&#xff0c…

常用python模板

1.简单脚本模板 def main():#代码逻辑if __name__"__main__":main() 2.类定义模板 Class Myclass:def __init__(self,parameter):self.parameterparameterdef my_method(self):#方法逻辑 3.函数定义模板 def my_function(parameter):#代码逻辑return result 4.…

【AI视频教程】只需5步,AI作出鸡你太美视频

1.视频效果 2.准备工作 制作视频效果,需要准备下面3个条件: 准备stable diffusion的环境剪辑一段【鸡你太美】原版视频stable diffusion安装sd-webui-IS-NET-pro插件 2.1部署stable diffusion环境 这里还是建议大家用云平台部署stable diffusion&am…

Python数据库操作全攻略:从入门到精通,一文掌握连接与操作MySQL、SQLite、PostgreSQL等主流数据库

在数据驱动的世界里,Python作为强大的编程语言,在处理和分析数据库方面具有显著优势。本文将深入浅出地讲解如何使用Python操作各类主流数据库,并通过实际代码示例帮助您快速上手。 一、Python操作MySQL数据库 借助mysql-connector-python库,我们可以轻松实现对MySQL数据…

第二十天-数据分析

1.介绍 1.什么是数据分析 1.以下4个纬度结合起来的数据科学 2.数据分析的特殊性

Java实现Tron(波场)区块链的开发实践(三)波场链水龙头、WEB3测试实战

上一节我们具体讲到Java实现Tron波场链的逻辑代码实现。 这一节我们通过部署和开发好的代码,针对测试链进行自测开发,准备测试环境。 1. 创建离线地址 首先我们需要一个离线地址,我们不需要在线进行创建,直接可以通过第一节的离…

重庆医科大学和重庆市生物信息学学会联合主办!第十六届生物信息学和生物医学技术国际会议(ICBBT 2024)即将召开!

2024年第十六届生物信息学和生物医学技术国际会议(ICBBT 2024)将于5月24-26日在中国重庆举行。本次会议由重庆医科大学和重庆市生物信息学学会联合主办。ICBBT会议系列一年一届,已有15年历史。本次会议的主要目标旨在促进生物信息学和生物医学…

4、Generator、class类、继承、Set、Map、Promise

一、生成器函数Generator 1、声明generator函数 function* 函数名() { }调用生成器函数 需要next()返回一个generator对象,对象的原型上有一个next(),调用返回对象{value:yield后面的值,done} function* fn() {console.log("我是生成器函数") } let it…

Linux-网络编程报错分析

1【UDP】通信 【No route to host】:没有连接主机的路由 原因分析: 1.没有配置好默认网关地址,计算机上的路由表找不到到目标ip的路由。 解决方法:检查网络配置 2. 解决方法: 3. 解决方法:

22 Dytechlab Cup 2022C. Ela and Crickets(思维、找规律、模拟)

思路就是找规律 可以发现,当拐点在角落时的情况和不在角落的情况是不同 当拐点在角落时,只有目标点的横纵坐标其中的一个和它相同时,这时才可能到达。 否则,我们就简单的例子可以看一下,当一个 2 ∗ 2 2*2 2∗2的矩阵的…