Java版设计模式/设计模式的作用是什么/类之间有哪些关系?又怎么表示

news2025/1/8 18:25:12

继续整理记录这段时间来的收获,详细代码可在我的Gitee仓库SpringBoot克隆下载学习使用!

1. 设计模式概述

1.1 设计模式创始“4人组”

  • ErichGamma–艾瑞克·伽马
  • Richard Helm—理查德·赫尔码
  • Ralph Johnson----拉尔夫·约翰逊
  • John Vlissides—约翰·威力斯蒂斯

1.2 软件设计模式

  • 称设计模式,本质是面向对象设计原则应用,是一种设计经验总结
  • 解决重复发生问题套路
  • 具有普遍性

1.3 学习目的

  • 提高编程、思维和设计能力
  • 使程序设计标准化,提高开发效率,降低开发周期
  • 提高代码可重用性、可读性、可扩展维护性

1.4 分类

1.4.1 创建型模式

  • 描述“创建对象”
  • 将对象创建与使用分离
  • 包括单例,原型,工厂,抽象及建造者等5种

1.4.2 结构型模式

  • 描述将对象组合成更大结构
  • 包括代理,适配器,桥接,装饰,外观,享元,组合等7种

1.4.3 行为型模式

  • 描述多个对象互相协作完成复杂任务及分配任务
  • 包括模板方法,策略,命令,职责链,状态,观察者,中介者,访问者,迭代器,备忘录及解释器等11种

2. UML

2.1 概述

  • Unified Modeling Language,用于设计软件的可视化建模语言,主要定义类图

2.2 类图

  • 类图–显示模型静态结构—内部结构以及类之间关系
  • 面向对象建模组成部分,简化人对系统理解
  • 系统编码测试模型

2.3 类图表示法

2.3.1 类表示法

  • 使用带有分割线矩阵来表示,包括类名,属性及方法3块
  • 属性/方法可见性符号
    • +:public
    • - :private
    • #:protected
  • 属性完整表示:可见性 名称 :类型 [默认参数]
  • 方法完整表示:可见性 名称[参数列表] [: 返回值类型]
注意:
1.默认参数可选
2.类型和名称可以互换

栗子

Person
+ name: String
+ age:int
+ method(): void
- method1(): String
# method2(int p1,String p2):int

Person类图说明:

  • public String name,public int age
  • 方法method(),public,无参,没有返回值
  • 方法method()1,private,无参,返回值为int
  • 方法method2(),proected,int型参数p1,Sting型参数p2,返回值为int

2.3.2 类之间表示法

2.3.2.1 关联关系

2.3.2.1.1 概念
  • 引用关系,用于表示一类对象与另一类对象之间关系
  • 分为一般关联,聚合和组合关系
  • 一般关联可分为单向关联,双向关联及自关联
2.3.2.1.2 一般关联
  • 单向关联,用带箭头实线表示,如图
    ![[Pasted image 20221226145135.png]]
  • 双向关联,用实线连接,如图
    在这里插入图片描述
  • 自关联,用带箭头实线指向自己,如图
    ![[Pasted image 20221226145407.png]]
2.3.2.1.3 聚合关系
  • 强关联关系,整体与部分之间关系,两者可单独存在
  • 通过成员对象实现
  • 用带空心菱形实线表示,菱形指向整体,如图
    ![[Pasted image 20221226145733.png]]
2.3.2.1.4 组合关系
  • 整体部分关系,整体在部分在
  • 用带实心菱形实线表示,菱形指向整体,如图
    ![[Pasted image 20221226150034.png]]

2.3.2.2 依赖关系

  • 使用关系,对象间耦合度最弱,临时关联
  • 通过局部变量,方法参数或静态方法来调用被依赖类中某一方法
  • 用带箭头虚线表示,箭头从使用者指向被依赖类,如图
    ![[Pasted image 20221226150555.png]]

2.3.2.3 继承关系

  • 对象间耦合度最强,特殊关系,父类子类关系,泛化关系
  • 用带空心三角箭头实线表示,箭头由子类指向父类,如图
    ![[Pasted image 20221226151256.png]]

2.3.2.4 实现关系

  • 接口与实现类关系,类中实现接口一切抽象方法
  • 用空心三角箭头虚线表示,箭头由实现类指向接口,如图
    在这里插入图片描述

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

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

相关文章

【Linux】Linux编译器-gcc/g++的使用和程序执行的基础底层原理

Linux编译器1.gcc/g 的使用2. 程序的基本翻译过程3.预处理3.1验证预处理的功能(gcc -E)4.编译(变成汇编语言)4.1验证编译过程(gcc -S)5.汇编(生成机器可识别代码)5.1验证汇编过程&am…

K_A11_002 基于STM32等单片机驱动DS18B20串口与OLED0.96双显示

K_A11_002 基于STM32等单片机驱动DS18B20 串口与OLED0.96双显示一、资源说明二、基本参数1.参数2.引脚说明三、驱动说明时序对应程序:四、部分代码说明1、接线说明1.1、STC89C52RCDHT11模块1.2、STM32F103C8T6DHT11模块五、基础知识学习与相关资料下载六、视频效果展示与程序资…

内核解读之内存管理(4)内存管理三级架构之page

我们前面介绍了linux内存管理的三级架构,node->zone->page。本节就来介绍page。 页是内核管理内存的基本单位,体系结构不同,支持的页大小也不尽相同,还有些体系结构甚至支持几种不同的页大小。大多数32位体系结构支持4KB的页…

【Python】爬取弹幕并保存到Excel中

hello,我是李华同学,最近开始学习爬虫,下面是我实现的一个得到弹幕的代码😏找一个URL👉想要得到一个网站的内容,首先要找到你想要内容的具体位置,首先你先找到一个有弹幕的地方,找到…

linux系统重装yum工具与python环境

文章目录前言一、强制删除原有环境1.删除python2.删除yum二、安装新环境前置准备三、下载依赖命令1.内核版本7.6.1810下载python依赖包下载yum包2.内核版本7.4.1708下载python依赖包下载yum包3.内核版本7.8.2003下载python依赖包下载yum依赖包4.下载结果四、安装前言 安装之前…

swagger入门

目录 1.前后端分离的特点 2.在没有swagger之前 3.swagger的作用 4.swagger的优点 5.集成swagger 5.1 新建springboot项目 5.2 集成swagger 5.3 开发一个controller用于测试 5.4 启动服务,验证集成效果 6.swagger常用注解 7.swagger使用综合案例 8.会议OA之sw…

第三章 Flink DataStream API

Flink 系列教程传送门 第一章 Flink 简介 第二章 Flink 环境部署 第三章 Flink DataStream API 第四章 Flink 窗口和水位线 第五章 Flink Table API&SQL 第六章 新闻热搜实时分析系统 一、DataStream API是什么? Flink 中的 DataStream 程序是对数据流&a…

Android 深入系统完全讲解(2)

1 系统启动过程、嵌入式系统启动过程 这是我之前画的启动过程的图,这个主要就是给大家讲明白,启动过程整个的流程。 第一个阶段,bootloader 系统在上电的时候,系统会从固定的地方加载一段代码进入内部 ram 进行运行。这段代码 通…

【数学思维】Quasi-convex and quesi-concave

【数学思维】Quasi-convex and quesi-concaveConvex function 定义如下 f(λx(1−λ)y)≤λf(x)(1−λ)f(y)f(\lambda x(1-\lambda)y)\le \lambda f(x)(1-\lambda)f(y) f(λx(1−λ)y)≤λf(x)(1−λ)f(y)Quasi-convex function 定义如下 f(λx(1−λ)y)≤max⁡{f(x),f(y)}f(\l…

【阶段三】Python机器学习01篇:机器学习概念、机器学习类别、机器学习应用场景与机器学习基本技术:特征、标签、模型

本篇的思维导图: 机器学习概念 机器学习是AI人工智能的分支技术,而深度学习是机器学习的重要分支。 人工智能、机器学习、深度学习三者的关系 机器学习就是从数据中发现规律,机器学习的关键内涵之一在于利用计算机的运算能力从大量的数据中发现一个“函数”或…

Linux——VMware Tools的介绍及安装方法

一、VMware Tools的作用 1.最大的好处是可以直接把windows界面的文件拖进linux虚拟机内。 2.鼠标可以直接从虚拟机移动到windows等等好处。 二、VMware Tools的安装步骤 1.首先把linux虚拟机关机或退出,然后点击“编辑虚拟机设置”。 2.点击CD/DVD,…

电子、半导体废水深度除氟、除重金属的技术详解

电子半导体行业废水来源及水质特点电子废水主要是印刷线路板中每个环节产生的废水,如线路板上的赋铜线路、电子元器件、二极管、三极管、电容等,日常生活中常见的就是电脑元器件,如内存条、CPU、主板等。这些东西在生产成型的过程中主要通过电…

968. 监控二叉树

题目 分析 首先明确把摄像头放在叶子节点的父节点位置,才能充分利用摄像头的覆盖面积。 贪心算法: 从下到上看局部最优,因为下面的节点最多,让叶子节点的父节点安摄像头最合理,所用摄像头最少。 整体全局最优&#xf…

基于融合SPD+BIFPN+CBAM改进YOLOv5的奶牛检测识别分析系统开发

在我之前的几篇文章中分别应用了不同的tricks来改进yolov5模型如下:加入针对小目标的SPD-Conv模块《yolov5s融合SPD-Conv用于提升小目标和低分辨率图像检测性能实践五子棋检测识别》加入BIFPN特征融合模块《基于yolov5sbifpn实践隧道裂缝裂痕检测》加入注意力机制模…

[数据结构]栈和队列

目录[数据结构]栈和队列一.栈1.栈的基本概念1.2 栈的常见基本操作1.3 栈的实现1.3.1 入栈1.3.2 出栈1.3.3获取栈顶元素1.3.4 判断栈为空1.3.5 栈实现二.队列2.1 入队2.2 出队2.3 获取队首元素2.4 实现队列[数据结构]栈和队列 一.栈 1.栈的基本概念 栈(Stack&#…

你了解真正的数字孪生吗?

数字孪生的目的是在虚拟空间构建数字化的复杂系统“镜像”,可以低成本、反复的从多个视角观察、控制、分析、验证和推演,从而帮助人们更好的在现实世界中完成设计、生产、运营等活动。 近年来,数字孪生技术在航空航天、工业制造、交通物流等多…

hbase2.x HBCK Report Region Holes Overlaps问题修复

Region Holes 查看该问题可通过master UI界面的HBCK Report查看 最下方RegionInfo展示了哪两个region之间存在空洞 也可以通过master日志查看 解决步骤 解决方法很简单,直接使用 hbck2 提供的 fixMeta 操作即可。 在 Usage 说明中能看到 fixMeta 能够修复 ‘…

【Linux】make/Makefile的使用

本文目录 背景简介 使用方法 为什么执行的指令是make和make clean呢? gcc如何判断文件是否需要重新执行? 背景简介 一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefifile定义了一系列的规则来指定…

16万字智慧医疗-医院信息化大数据建设 方案

【版权声明】本资料来源网络,知识分享,仅供个人学习,请勿商用。【侵删致歉】如有侵权请联系小编,将在收到信息后第一时间删除!完整资料领取见文末,部分资料内容: 目 录 1 概述 1.1 现状分析 …

人工智能-网络编程、TCP

目录1、网络编程1.1网络介绍1.2IP地址1.3 ifconfig和ping命名1.4端口和端口号1.5端口号的分类1.6 socket介绍1.7 TCP介绍2、TCP的网络应用程序开发2.1 python3编码转换2.2 TCP客户端程序开发流程2.3 TCP客户端程序开发2.4 TCP服务端程序开发流程2.5 TCP…