设计模式概述
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. 概念 设计模式概念的提出: 设计模式最早于1977年在建筑设计行业中被 克里斯托夫亚历山大(Christopher Alexander) 在他的著作 《建筑模式语言:城镇、建筑、构造》 中提出。 软件工程界在1990年开始了设计模式话题的研…...
华为OD机试 - 箱子之形摆放(Python)| 真题+思路+考点+代码+岗位
箱子之形摆放 题目 有一批箱子(形式为字符串,设为str), 要求将这批箱子按从上到下以之字形的顺序摆放在宽度为 n 的空地,请输出箱子的摆放位置。 例如:箱子ABCDEFG,空地宽度为3,摆放结果如图: 则输出结果为: AFG BE CD 输入 输入一行字符串,通过空格分隔,前面部…...
第九章:创建用户和用户权限
Windows:创建用户:第一种方法创建用户:先点右上角的工具,然后点击AD用户和计算机双击skills.com打开目录,再双击Users,进入文件夹中在右框中右击空白处,新建用户填充好用户信息后点击下一步然后…...
如何制定人生目标
一、如何分解目标 人生终极目标并不一定要多详细精确,但一定要被分解,要分成长期目标、中期目标和一系列的短期目标,其中短期目标又可以分解为你能够马上操作的一个个的小目标。 二、目标制定的原则 目标制定遵循 SMART-W 原则: …...
用户认证概述
文章目录一、用户身份认证1.1 单一服务器模式1.2 SSO(Single Sign On)模式1.3 Token模式二、JWT令牌2.1 JWT 令牌说明2.2 JWT令牌的组成2.3 JWT 问题和趋势2.4 JWT 测试一、用户身份认证 1.1 单一服务器模式 一般过程如下: 用户向服务器发送…...
XQuery FLWOR + HTML
XML 实例文档 我们将在下面的例子中继续使用这个 "books.xml" 文档(与上一节中的文件相同)。 在您的浏览器中查看 "books.xml" 文件。 在一个 HTML 列表中提交结果 请看下面的 XQuery FLWOR 表达式: for $x in doc(&…...
MySQL用户管理
文章目录MySQL用户管理用户用户信息创建用户修改用户密码删除用户数据库的权限MySQL中的权限给用户授权回收权限MySQL用户管理 与Linux操作系统类似,MySQL中也有超级用户和普通用户之分。如果一个用户只需要访问MySQL中的某一个数据库,甚至数据库中的某…...
C++【模板初阶】
✨个人主页: Yohifo 🎉所属专栏: C修行之路 🎊每篇一句: 图片来源 No one saves us but ourselves, no one can and no one may. We ourselves must walk the path. 除了我们自己,没有人能拯救我们…...
华为OD机试 - 磁盘容量(Python)| 真题+思路+考点+代码+岗位
磁盘容量 题目 磁盘的容量单位常用的有M、G、T 他们之间的换算关系为1T =1024G,1G=1024M 现在给定n块磁盘的容量,请对他们按从小到大的顺序进行稳定排序 例如给定5块盘的容量 5 1T 20M 3G 10G6T 3M12G9M 排序后的结果为 20M 3G 3M12G9M 1T 10G6T 注意单位可以重复出现 上述…...
更专业、安全、可控!政企都选择WorkPlus私有化部署
现如今政企机构在信息化建设的过程中,内部的沟通协作都离不开即时通讯软件。但大多数企业使用的即时通讯软件都是Saas部署的,虽然使用Saas部署产品成本低,又方便快捷,但还是建议企业有条件最好使用私有化部署的即时通讯软件&#…...
[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、查询所有职工所属部门的部门号,不显示重复的部门号。 3、求出所有职工的人数。 4、列出最高工资和最低工资。 5、列出职工的平均工资和总工资。 6、创建一个只有职工号、姓名和工作时间的新表&…...
用于汽车传感器的混合点云语义压缩:性能评估
Hybrid Point Cloud Semantic Compression for Automotive Sensors: A Performance Evaluation https://arxiv.org/pdf/2103.03819.pdf 在自动驾驶中,车辆与车辆之间的信息共享起着重要作用。在所有传感器中,激光雷达产生的3D点云的数据量通常较高。因…...
最流行十大在线客服系统排行榜-市场常见客服系统软件排行-2023最新
2023年榜单规则依据 在线客服系统十大品牌榜数据由CNPP品牌榜中榜大数据「研究院」和CN10排排榜技术「研究院」通过资料收集整理,并基于大数据统计及人为根据市场和参数条件变化的分析研究专业测评而得出,是大数据、云计算、数据统计真实客观呈现的结果&…...
算法笔记(六)—— 二叉树相关概念及经典算法题
二叉树的相关概念(判断方式) 1. 搜索二叉树:对每棵子树,左树比头小,右树比头大。 中序遍历,判断是否升序 2. 完全二叉树:最后一层满或从左到右遍满。 宽度遍历,如果有节点有右孩子…...
redux全网最详细教程
一.路由懒加载 关键点: lazy懒加载 Suspense组件(添加加载提示) utils文件夹 –LazyLoad.js //lazy懒加载 Suspense 组件(添加加载提示) import {lazy,Suspense} from react export default function LazyLoad(url)…...
华为OD机试 - 匿名信(Python)| 真题+思路+考点+代码+岗位
匿名信 题目 电视剧《分界线》里面有一个片段,男主为了向警察透露案件细节,且不暴露自己,于是将报刊上的字减下来,剪拼成匿名信。 现在又一名举报人,希望借鉴这种手段,使用英文报刊完成举报操作。 但为了增加文章的混淆度,只需满足每个单词中字母数量一致即可,不关注…...
【Python】编写代码实现指定下标值顺序进行正序和倒序排序算法编程
🎉🎉 在本次python文章中,主要通过定义一个排序方法,实现一组数列能够按照另一组数列指定的位置进行重新排序输出,默认正序排序,可通过True表示逆序输出 目录1、知识点2、数列和元组1)错误遍历方…...
Sitara™处理器的产品开发路线图
Sitara™处理器的产品开发路线图概述Evaluation Phase(评估阶段)Board Development Phase(硬件发展阶段,硬件设计人员应重点关注这个阶段)Software Development Phase(软件发展阶段)Product Phase/SW Lifecycle概述 一般情况下,会存在四个主要的发展阶段…...
岗位来啦-华为研发OD招聘
研发OD招聘 ★★关于我们★★ 万物互联时代已到来,无线通信技术正在重塑世界。作为行业领导者,华为无线致力于通过移动创新消除数字鸿沟,构建万物互联的智能世界。基于5G的技术,家庭无线宽带接入、车联网、云AR/VR、eMBB高清视频…...
【LeetCode】剑指 Offer 06. 从尾到头打印链表 p58 -- Java Version
题目链接: https://leetcode.cn/problems/cong-wei-dao-tou-da-yin-lian-biao-lcof/ 1. 题目介绍(06. 从尾到头打印链表) 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。 【测试用例…...
童年回忆--扫雷(包括标记功能和递归展开)--万字讲解让你学会扫雷制作
魔王的介绍:😶🌫️一名双非本科大一小白。魔王的目标:🤯努力赶上周围卷王的脚步。魔王的主页:🔥🔥🔥大魔王.🔥🔥🔥 ❤️…...
【重器】GPS北斗卫星时钟基准与卫星授时服务技术原理
【重器】GPS北斗卫星时钟基准与卫星授时服务技术原理 【重器】GPS北斗卫星时钟基准与卫星授时服务技术原理 1.前言 由计算机网络系统组成的分布式系统,若想协调一致进行:IT行业的“整点开拍”、“秒杀”、“Leader选举”,通信行业的“同步组网…...
软件测试未来发展趋势怎么样
未来,互联网技术是很多企业能够活下去的关键点。互联网技术成为新的基建,互联网“基建”化就决定了软件测试行业的缺口会一直扩大。 并且,软件测试岗位,已不仅局限于互联网企业,现已逐步深入到实体产业,金…...
aws Distro for OpenTelemetry 可观测性workshop记录
参考资料 https://aws-otel.github.io/docs/introductionhttps://aws-otel.github.io/docs/introduction aws distro for opentelemetry 官方提供了不同语言不同使用场景下完善的使用实例和相关配置。 AWS Distro for OpenTelemetrics 由以下部分组成,用于向后端…...
Leetcode力扣秋招刷题路-0068
从0开始的秋招刷题路,记录下所刷每道题的题解,帮助自己回顾总结 68. 文本左右对齐 给定一个单词数组 words 和一个长度 maxWidth ,重新排版单词,使其成为每行恰好有 maxWidth 个字符,且左右两端对齐的文本。 你应该…...
Nginx介绍及安装(windows版,Linux版)
目录 一、Nginx介绍 1、Nginx优势 2、Nginx作用 3、部署静态资源 4、代理 5、负载均衡 二、Nginx安装步骤(windows版) 三、Nginx安装步骤(Linux版) 1、官网下载安装包,下载完之后上传到Linux系统上 2、在Lin…...
Camera | 4.瑞芯微平台MIPI摄像头应用程序编写
前面3篇我们讲解了camera的基础概念,MIPI协议,CSI2,常用命令等,本文带领大家入门,如何用c语言编写应用程序来操作摄像头。 Linux下摄像头驱动都是基于v4l2架构,要基于该架构编写摄像头的应用程序ÿ…...
【1250. 检查「好数组」】
来源:力扣(LeetCode) 描述: 给你一个正整数数组 nums,你需要从中任选一些子集,然后将子集中每一个数乘以一个 任意整数,并求出他们的和。 假如该和结果为 1,那么原数组就是一个「…...
Spring 如何解决循环依赖?
什么是循环依赖 ? 一个或多个对象之间存在直接或间接的依赖关系,这种依赖关系构成一个环形调用,有下面 3 种方式。 我们看一个简单的 Demo,对标“情况 2”。 Service public class Louzai1 {Autowiredprivate Louzai2 louzai2;…...
慈溪网站建设哪家好/广州网站营销seo
首先需要声明,本文纯属一个毫无远见和真才实学的小小散户的愚昧见解,仅供参考。 上交所 http://www.sse.com.cn/ A股全市场行业市盈率(A股市场主要板块市盈率) http://www.csindex.com.cn/sseportal/csiportal/hy_syl/syl.jsp 上海市场A股市盈率 h…...
商丘做网站推广的公司/定制化网站建设
import tensorflow as tf import numpy as np# 在这个例子中,我们的目标就是要找到合适的b和k,使得该线性模型能够把上面的样本给表示出来# 第一、使用Numpy生成一百个随机点,这就是样本 x_data np.random.rand(100) y_data x_data*0.1 0.2# 第二、构…...
环境设计排版素材网站/百度网站怎样优化排名
转载自:http://www.cocoachina.com/gamedev/misc/2011/0627/2981.html 游戏一直是 App Store 应用里最热门、最赚钱的一大分类,iOS 游戏强调创意和趣味性的特点也让国内开发团队有更多一鸣惊人的机会。针对市场、玩家、开发商、成功案例等游戏开发要素&a…...
做网红用哪个网站/必应搜索引擎网站
16年元旦顶着大风来北京面试,一天6轮,在回去的高铁上感觉面试可能挂了,一个礼拜后收到了Offer。由于自身各方面的原因,18年元旦,选择离开微软。It is hard to say LEAVE, 这里整理了一下我在微软的两年经历,…...
做塑胶原料用什么网站好/网站用户体验优化
AWS - 弹性计算云( Elastic Compute Cloud)Amazon EC2 (Elastic Compute Cloud)是一种Web服务接口,可在AWS云中提供可调整大小的计算容量。 它专为开发人员设计,可以完全控制Web扩展和计算资源。可以调整EC2实例的大小,并根据我们的要求按比例…...
地信网站建设/网络营销师培训
简单快捷键例如:this.button1.Text "OK(&O)"复杂的则需要使用 [user.dll]C#实现快捷键(系统热键)响应在应用中,我们可能会需要实现像CtrlC复制、CtrlV粘贴这样的快捷键,本文简单介绍了它的实现,并给出了一个实现类。http://ik…...