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

设计模式概述

1. 概念

设计模式概念的提出:

  设计模式最早于1977年在建筑设计行业中被 克里斯托夫·亚历山大(Christopher Alexander) 在他的著作 《建筑模式语言:城镇、建筑、构造》 中提出。
  软件工程界在1990年开始了设计模式话题的研讨,直到1995年 四人组(GoF,Gang of For) 在著作 《设计模式:可复用面向对象软件的基础》 一书中提出软件工程的设计模式。此书中共收录了23种设计模式。


软件设计模式的概念:

  软件设计模式(Software Design Pattern) 是一套对于代码开发经验的总结,是解决特定问题的一系列套路,具有一定的普遍性,可以反复使用。其本质是面向对象设计原则的实际运用,是对类的封装性、继承性和多态性以及类的关联关系和组合关系的充分理解。


设计模式的优点:

  • 提高开发者的思维能力、编程能力、设计能力、开发效率
  • 使代码标准化、工程化
  • 提高代码可重用性、可读性、可靠性、灵活性、可维护性

设计模式三大类:

  • 创建型模式
    以更低的耦合度实例化对象,使对象的创建与使用分离
    • 单例模式
    • 工厂模式
    • 抽象工厂模式
    • 建造者模式
    • 原型模式
  • 结构型模式
    将一个简单的类/对象组装为一个更大的结构
    • 装饰器模式
    • 代理模式
    • 桥接模式
    • 适配器模式
    • 组合模式
    • 外观模式
    • 享元模式
  • 行为型模式
    描述类/对象的职责分配(交互方式)来实现较为复杂的任务
    • 策略模式
    • 模板模式
    • 命令模式
    • 迭代器模式
    • 观察者模式
    • 仲裁者模式
    • 备忘录模式
    • 解释器模式
    • 状态模式
    • 责任链模式
    • 访问者模式

2. UML类图绘制

统一建模语言(Unified Modeling Language,UML):
  用来设计软件的可视化建模语言,能表达软件设计中的动态与静态信息。推荐的UML图绘制工具:processon 。

UML图组成讲解:

  • 类名
    • 斜体——abstract
    • _——static
    • <<>>——接口
  • 访问修饰符:
    • + —— public
    • # —— protected
    • ~ —— package,不写默认为~
    • - —— private
  • 静态方法/变量:
    • _——static
  • 属性表示:
    • 访问修饰符 变量名: 变量类型
  • 方法表示:
    • 参数有两种写法
      访问修饰符 方法名(参数1:参数类型1, 参数2:参数类型2): 返回类型
      访问修饰符 方法名(参数类型1 参数1, 参数类型2 参数2): 返回类型
      
    • 不写返回类型,默认为void

对象间的关系的UML图绘制:对象间的关系

相关文章:

设计模式概述

1. 概念 设计模式概念的提出&#xff1a;   设计模式最早于1977年在建筑设计行业中被 克里斯托夫亚历山大&#xff08;Christopher Alexander&#xff09; 在他的著作 《建筑模式语言&#xff1a;城镇、建筑、构造》 中提出。   软件工程界在1990年开始了设计模式话题的研…...

华为OD机试 - 箱子之形摆放(Python)| 真题+思路+考点+代码+岗位

箱子之形摆放 题目 有一批箱子(形式为字符串,设为str), 要求将这批箱子按从上到下以之字形的顺序摆放在宽度为 n 的空地,请输出箱子的摆放位置。 例如:箱子ABCDEFG,空地宽度为3,摆放结果如图: 则输出结果为: AFG BE CD 输入 输入一行字符串,通过空格分隔,前面部…...

第九章:创建用户和用户权限

Windows&#xff1a;创建用户&#xff1a;第一种方法创建用户&#xff1a;先点右上角的工具&#xff0c;然后点击AD用户和计算机双击skills.com打开目录&#xff0c;再双击Users&#xff0c;进入文件夹中在右框中右击空白处&#xff0c;新建用户填充好用户信息后点击下一步然后…...

如何制定人生目标

一、如何分解目标 人生终极目标并不一定要多详细精确&#xff0c;但一定要被分解&#xff0c;要分成长期目标、中期目标和一系列的短期目标&#xff0c;其中短期目标又可以分解为你能够马上操作的一个个的小目标。 二、目标制定的原则 目标制定遵循 SMART-W 原则&#xff1a; …...

用户认证概述

文章目录一、用户身份认证1.1 单一服务器模式1.2 SSO&#xff08;Single Sign On&#xff09;模式1.3 Token模式二、JWT令牌2.1 JWT 令牌说明2.2 JWT令牌的组成2.3 JWT 问题和趋势2.4 JWT 测试一、用户身份认证 1.1 单一服务器模式 一般过程如下&#xff1a; 用户向服务器发送…...

XQuery FLWOR + HTML

XML 实例文档 我们将在下面的例子中继续使用这个 "books.xml" 文档&#xff08;与上一节中的文件相同&#xff09;。 在您的浏览器中查看 "books.xml" 文件。 在一个 HTML 列表中提交结果 请看下面的 XQuery FLWOR 表达式&#xff1a; for $x in doc(&…...

MySQL用户管理

文章目录MySQL用户管理用户用户信息创建用户修改用户密码删除用户数据库的权限MySQL中的权限给用户授权回收权限MySQL用户管理 与Linux操作系统类似&#xff0c;MySQL中也有超级用户和普通用户之分。如果一个用户只需要访问MySQL中的某一个数据库&#xff0c;甚至数据库中的某…...

C++【模板初阶】

✨个人主页&#xff1a; Yohifo &#x1f389;所属专栏&#xff1a; C修行之路 &#x1f38a;每篇一句&#xff1a; 图片来源 No one saves us but ourselves, no one can and no one may. We ourselves must walk the path. 除了我们自己&#xff0c;没有人能拯救我们&#xf…...

华为OD机试 - 磁盘容量(Python)| 真题+思路+考点+代码+岗位

磁盘容量 题目 磁盘的容量单位常用的有M、G、T 他们之间的换算关系为1T =1024G,1G=1024M 现在给定n块磁盘的容量,请对他们按从小到大的顺序进行稳定排序 例如给定5块盘的容量 5 1T 20M 3G 10G6T 3M12G9M 排序后的结果为 20M 3G 3M12G9M 1T 10G6T 注意单位可以重复出现 上述…...

更专业、安全、可控!政企都选择WorkPlus私有化部署

现如今政企机构在信息化建设的过程中&#xff0c;内部的沟通协作都离不开即时通讯软件。但大多数企业使用的即时通讯软件都是Saas部署的&#xff0c;虽然使用Saas部署产品成本低&#xff0c;又方便快捷&#xff0c;但还是建议企业有条件最好使用私有化部署的即时通讯软件&#…...

[SDX12] X12 USB to LTE IPA概率不生效问题分析及优化策略

问题描述 在测试USB to LTE的流量过程中,发现IPA概率失效,正常可以跑到320Mbps,但是跑流1分钟左右会出现IPA失效及跑流掉坑的情况。 问题log dmesg log 3,1862,149793394,-;ipa ipa3_ioctl:3564 using obselete command: IPA_IOC_RM_ADD_DEPENDENCY 3,1863,149793549,-;ipa …...

mysql8.0(单表查询与多表拆线)

目录 单表查询 1、显示所有职工的基本信息。 2、查询所有职工所属部门的部门号&#xff0c;不显示重复的部门号。 3、求出所有职工的人数。 4、列出最高工资和最低工资。 5、列出职工的平均工资和总工资。 6、创建一个只有职工号、姓名和工作时间的新表&…...

用于汽车传感器的混合点云语义压缩:性能评估

Hybrid Point Cloud Semantic Compression for Automotive Sensors: A Performance Evaluation https://arxiv.org/pdf/2103.03819.pdf 在自动驾驶中&#xff0c;车辆与车辆之间的信息共享起着重要作用。在所有传感器中&#xff0c;激光雷达产生的3D点云的数据量通常较高。因…...

最流行十大在线客服系统排行榜-市场常见客服系统软件排行-2023最新

2023年榜单规则依据 在线客服系统十大品牌榜数据由CNPP品牌榜中榜大数据「研究院」和CN10排排榜技术「研究院」通过资料收集整理&#xff0c;并基于大数据统计及人为根据市场和参数条件变化的分析研究专业测评而得出&#xff0c;是大数据、云计算、数据统计真实客观呈现的结果&…...

算法笔记(六)—— 二叉树相关概念及经典算法题

二叉树的相关概念&#xff08;判断方式&#xff09; 1. 搜索二叉树&#xff1a;对每棵子树&#xff0c;左树比头小&#xff0c;右树比头大。 中序遍历&#xff0c;判断是否升序 2. 完全二叉树&#xff1a;最后一层满或从左到右遍满。 宽度遍历&#xff0c;如果有节点有右孩子…...

redux全网最详细教程

一.路由懒加载 关键点&#xff1a; lazy懒加载 Suspense组件&#xff08;添加加载提示&#xff09; utils文件夹 –LazyLoad.js //lazy懒加载 Suspense 组件&#xff08;添加加载提示&#xff09; import {lazy,Suspense} from react export default function LazyLoad(url)…...

华为OD机试 - 匿名信(Python)| 真题+思路+考点+代码+岗位

匿名信 题目 电视剧《分界线》里面有一个片段,男主为了向警察透露案件细节,且不暴露自己,于是将报刊上的字减下来,剪拼成匿名信。 现在又一名举报人,希望借鉴这种手段,使用英文报刊完成举报操作。 但为了增加文章的混淆度,只需满足每个单词中字母数量一致即可,不关注…...

【Python】编写代码实现指定下标值顺序进行正序和倒序排序算法编程

&#x1f389;&#x1f389; 在本次python文章中&#xff0c;主要通过定义一个排序方法&#xff0c;实现一组数列能够按照另一组数列指定的位置进行重新排序输出&#xff0c;默认正序排序&#xff0c;可通过True表示逆序输出 目录1、知识点2、数列和元组1&#xff09;错误遍历方…...

Sitara™处理器的产品开发路线图

Sitara™处理器的产品开发路线图概述Evaluation Phase(评估阶段)Board Development Phase(硬件发展阶段&#xff0c;硬件设计人员应重点关注这个阶段)Software Development Phase(软件发展阶段)Product Phase/SW Lifecycle概述 一般情况下&#xff0c;会存在四个主要的发展阶段…...

岗位来啦-华为研发OD招聘

研发OD招聘 ★★关于我们★★ 万物互联时代已到来&#xff0c;无线通信技术正在重塑世界。作为行业领导者&#xff0c;华为无线致力于通过移动创新消除数字鸿沟&#xff0c;构建万物互联的智能世界。基于5G的技术&#xff0c;家庭无线宽带接入、车联网、云AR/VR、eMBB高清视频…...

css实现圆环展示百分比,根据值动态展示所占比例

代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...

GitFlow 工作模式(详解)

今天再学项目的过程中遇到使用gitflow模式管理代码&#xff0c;因此进行学习并且发布关于gitflow的一些思考 Git与GitFlow模式 我们在写代码的时候通常会进行网上保存&#xff0c;无论是github还是gittee&#xff0c;都是一种基于git去保存代码的形式&#xff0c;这样保存代码…...

uniapp 字符包含的相关方法

在uniapp中&#xff0c;如果你想检查一个字符串是否包含另一个子字符串&#xff0c;你可以使用JavaScript中的includes()方法或者indexOf()方法。这两种方法都可以达到目的&#xff0c;但它们在处理方式和返回值上有所不同。 使用includes()方法 includes()方法用于判断一个字…...

打手机检测算法AI智能分析网关V4守护公共/工业/医疗等多场景安全应用

一、方案背景​ 在现代生产与生活场景中&#xff0c;如工厂高危作业区、医院手术室、公共场景等&#xff0c;人员违规打手机的行为潜藏着巨大风险。传统依靠人工巡查的监管方式&#xff0c;存在效率低、覆盖面不足、判断主观性强等问题&#xff0c;难以满足对人员打手机行为精…...

Sklearn 机器学习 缺失值处理 获取填充失值的统计值

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 使用 Scikit-learn 处理缺失值并提取填充统计信息的完整指南 在机器学习项目中,数据清…...

2.3 物理层设备

在这个视频中&#xff0c;我们要学习工作在物理层的两种网络设备&#xff0c;分别是中继器和集线器。首先来看中继器。在计算机网络中两个节点之间&#xff0c;需要通过物理传输媒体或者说物理传输介质进行连接。像同轴电缆、双绞线就是典型的传输介质&#xff0c;假设A节点要给…...

TJCTF 2025

还以为是天津的。这个比较容易&#xff0c;虽然绕了点弯&#xff0c;可还是把CP AK了&#xff0c;不过我会的别人也会&#xff0c;还是没啥名次。记录一下吧。 Crypto bacon-bits with open(flag.txt) as f: flag f.read().strip() with open(text.txt) as t: text t.read…...

对象回调初步研究

_OBJECT_TYPE结构分析 在介绍什么是对象回调前&#xff0c;首先要熟悉下结构 以我们上篇线程回调介绍过的导出的PsProcessType 结构为例&#xff0c;用_OBJECT_TYPE这个结构来解析它&#xff0c;0x80处就是今天要介绍的回调链表&#xff0c;但是先不着急&#xff0c;先把目光…...

算法250609 高精度

加法 #include<stdio.h> #include<iostream> #include<string.h> #include<math.h> #include<algorithm> using namespace std; char input1[205]; char input2[205]; int main(){while(scanf("%s%s",input1,input2)!EOF){int a[205]…...

基于谷歌ADK的 智能产品推荐系统(2): 模块功能详解

在我的上一篇博客&#xff1a;基于谷歌ADK的 智能产品推荐系统(1): 功能简介-CSDN博客 中我们介绍了个性化购物 Agent 项目&#xff0c;该项目展示了一个强大的框架&#xff0c;旨在模拟和实现在线购物环境中的智能导购。它不仅仅是一个简单的聊天机器人&#xff0c;更是一个集…...