设计模式----开题

news2024/10/7 20:33:56

简介: 本文主要介绍设计模式中的六大设计原则。开闭原则,里氏代换原则,依赖倒转原则,接口隔离原则,迪米特原则和合成复用原则。这几大原则是设计模式使用的基础,在使用设计模式时,应该牢记这六大原则。
设计模式遵从的原则

设计模式的原则

1、开闭原则(Open Close Principle)

  • 对扩展开放,对修改关闭
  • 在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。

2、里氏代换原则(Liskov Substitution Principle)

  • 在一个软件系统中,子类应该可以替换任何基类能够出现的地方,并且经过替换后,代码还能正常工作。

3、依赖倒转原则(Dependence Inversion Principle)

  • 是开闭原则的基础
  • 具体内容:针对接口编程,依赖于抽象而不依赖于具体。

4、接口隔离原则(Interface Segregation Principle)

  • 使用多个隔离的接口,比使用单个接口要好。降低类之间的耦合度。
  • 他强调降低依赖,降低耦合。

5、迪米特法则(Demeter Principle),又称为最少知道原则

  • 一个实体应当尽量少的与其他实体之间发生相互作用,使得系统功能模块相对独立。

6、合成复用原则(Composite Reuse Principle)

  • 尽量使用合成/聚合的方式,而不是使用继承。

设计模式分类

  • 创建型模式:工厂方法模式,抽象工厂模式,单例模式,建造者模式,原型模式
  • 结构型模式:适配器模式,装饰器模式,代理模式,外观模式,桥接模式,组合模式,享元模式
  • 行为型模式:策略模式,模板方法模式,观察者模式,迭代子模式,责任链模式,命令模式,备忘录模式,状态模式,访问者模式,中介者模式,解释器模式。

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

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

相关文章

IDEA 如何运行SpringBoot项目(手把手超详细截图)

IDEA 如何运行SpringBoot项目(手把手超详细截图) 第一章:github 导入项目 在GitHub上面找到我们需要部署项目的URL,并且复制粘贴到IDEA中,如下图所示。 第二章:Maven的准备与部署 由于idea自带Maven环境&#xff0c…

利用vite快速搭建vue3项目

1、选择一个文件夹,在vscode终端打开,输入命令【npm create vitelatest】 npm create vitelatest 2、提示你输入项目名称之后,我这里设置的是【rookiedemo】 3、回车之后,出现选择框架的提示,我们选择【vue】回车 4、…

Python 数据可视化之密度散点图 Density Scatter Plot

🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 密度散点图(Density Scatter Plot),也称为密度点图或核密度估计散点图,是一种数据可视化技术,主要用于展示大量数据点在二维平面上的分布情况…

ElementUI table表格组件实现双击编辑单元格失去焦点还原,支持多单元格

在使用ElementUI table表格组件时有时需要双击单元格显示编辑状态,失去焦点时还原表格显示。 实现思路: 在数据中增加isFocus:false.控制是否显示在table中用cell-dblclick双击方法 先看效果: 上源码:在表格模板中用scope.row…

【Linux】主机搭建 Linux服务器环境 笔记

目录 前言选择系统软件1. 用U盘装系统2. 安装 Centos7.93. 网络套件 应用软件1. ngnix2. 防火墙配置3. nodejs 后记 前言 过年买了个 mini 主机当玩具玩一下,这里记录下。 选择 已有主力机 (windows) 的情况下,使用过如下四种 Linux宿主环境。这里总…

数据结构-邻接链表

介绍 邻接矩阵是运用较多的一种储存图的方法,但如果一张网图边数较少,就会出现二维矩阵中大部分数据为0的情况,浪费储存空间 为了避免空间浪费,也可以采用数组与链表结合的方式来存储图 假设有这样一张图 我们可以先用一个数组…

关于本地docker启动xxl-job

之前通过github拉取xxl-job到本地启动,已经验证完了,主要要记住以下几个步骤: 1.拉取代码 GitHub地址:https://github.com/xuxueli/xxl-job Gitee地址:https://gitee.com/xuxueli0323/xxl-job 2.idea打开,找到tabl…

鸿蒙Next怎么升级,有便捷的方法?

早在2023年11月,市场上有自媒体博主表示,华为HarmonyOS NEXT的升级计划是2X年底到2X年初完成一亿部,2X年底完成三亿部。虽然该博主没有明确具体年份,但预计是2024年底2025年初升级一亿部HarmonyOS NEXT设备,2025年底完…

java数据结构与算法刷题-----LeetCode503. 下一个更大元素 II

java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/123063846 解题思路:时间复杂度和空间复杂度都是O(n) 此题是739题的衍生题…

2.19C语言学习

关于memset和0x3f int a[100]; memset(a,0x3f,sizeof(a) ); 0x3f0011 111163 C中int型变量所占的位数为4个字节,即32位 0x3f显然不是int型变量中单个字节的最大值,应该是0x7f0111 1111 B 那为什么要赋值0x3f: 作为无穷大使用 因为4个字节均…

python在flask中的请求数据“无限流”

文章目录 一、问题描述二、解决方案 一、问题描述 在flask请求中,有个需求是让调用方一直调接口,并立马返回,而接口方缓存请求,依次执行。 二、解决方案 from flask import Flask, request, jsonify from queue import Queue i…

找到包含两/三个平面坐标点的椭圆点集

直接上代码 import numpy as np def fit_ellipse(points:np.array None, extension_ratio: float 0.2, eccentricity: float 0.8, n_points: int 100):center np.mean(points, axis0)if points.shape[0] 2:axis_vector points[1] - points[0]distance np.linalg.norm(…

K8s ingress-nginx根据请求目录不同将请求转发到不同应用

K8s ingress-nginx根据请求目录不同将请求转发到不同应用 1. 起因 有小伙伴做实验想要实现以下需求: 输入www.pana.com/app1访问app1的svc 输入www.pana.com/app2访问app2的svc 2. 实验 2.1 Dockerfile 先准备Dockerfile FROM nginx:1.20ADD index.html /usr/share/ngin…

.net6 webapi log4net完整配置使用流程

前置&#xff1a;为项目安装如下两个依赖 1.创建文件夹cfgFile 2.创建log4net.Config <?xml version"1.0" encoding"utf-8" ?> <log4net><appender name"ConsoleAppender" type"log4net.Appender.ConsoleAppender"…

Sora给中国AI带来的真实变化

OpenAI的最新技术成果——文生视频模型Sora&#xff0c;在春节假期炸裂登场&#xff0c;令海内外的AI从业者、投资人彻夜难眠。 如果你还没有关注到这个新闻&#xff0c;简单介绍一下&#xff1a;Sora是OpenAI使用超大规模视频数据&#xff0c;训练出的一个通用视觉模型&#x…

搜索中关于稀疏检索和稠密向量检索的召回效果比较

不同检索方式说明 最近在做搜索召回提升相关的研究工作。对比了稀疏检索和稠密向量检索的效果。其中使用的搜索引擎为elasticsearch8.x版本。稀疏检索包括BM25的检索方式&#xff0c;以及es官方在8.8之后版本提供的稀疏向量模型的方式。稠密向量检索&#xff0c;是指借助机器学…

OAuth2.0 最简向导

本文是一篇关于OAuth2.0的启蒙教程&#xff0c;图文并茂&#xff0c;通俗易懂&#xff0c;力求用最简洁明了的方式向初学者解释OAuth2.0是什么。本文并不是冗杂难懂的长篇大论&#xff0c;一图胜千言&#xff0c;深入浅出OAuth2.0&#xff0c;知其然知其所以然。 参考文献 首…

python OpenCV:seamlessClone泊松融合

一、seamlessClone函数的用法 翻译 https://www.learnopencv.com/seamless-cloning-using-opencv-python-cpp/ def seamlessClone(src, dst, mask, p, flags, blendNone): # real signature unknown; restored from __doc__"""seamlessClone(src, dst, mask, …

使用C# Net6连接国产达梦数据库记录

达梦官网&#xff1a;http://www.dameng.com/ 1 下载达梦并进行安装 下载地址&#xff1a;官网首页——服务与合作——下载中心&#xff08;https://www.dameng.com/list_103.html&#xff09; 根据需要自行下载需要的版本&#xff0c;测试版本为&#xff1a;x86 win64 DM8版…

python3 flask 实现对config.yaml文件的内容的增删改查,并重启服务

config.yaml配置文件内容 功能就是userpass下的用户名和密码做增删改查&#xff0c;并重启hy2服务 auth:type: userpassuserpass:csdn: csdnlisten: :443 masquerade:proxy:rewriteHost: trueurl: https://www.bing.com/type: proxy tls:cert: /root/hyst*****马赛克******er…