为掌握Java设计模式奠基:两步搞懂UML类图

简介: 为掌握Java设计模式奠基:两步搞懂UML类图

前言


在学习了一段时间的框架以及Spring Boot微服务架构以后,愈发的感觉到Java设计模式在实际项目开发中的重要性,一个好的设计模式能够避免之后很多问题的出现。以前写的代码可以说没有设计模式可言,以至于之后项目中要拓展一个功能时,代码量以及难度不亚于重构一次项目,因此决定开始学习Java设计模式,在此做一个记录。

工欲善其事,必先利其器在学习设计模式的过程中,采用的开发工具为Idea,画类图使用的工具为PowerDesigner本文将介绍UML类图的概念

一、UML类图的基本概念


什么是类图:类图是结构图,常被用于描述一个系统的静态结构。 一个类图中通常包含有类的UML图、接口的UML图以及泛化关系的UML图、关联关系的UML图、依赖关系的UML图和实现关系的UML图

1、类与接口在类图中的表示方法


①、类

在UML中,通常使用一个长方形来描述一个类的主要构成,将长方形垂直地分为三层

  1. 第一层:名字层
    在这一层中列出类的名称,来区分类为具体类还是抽象类
    如果类的名字是常规字形,表示该类是具体类;如果类的名字是斜体字形,表明该类时抽象类
  2. 第二层:变量层(也叫属性层)

在这一层中列出类的成员变量以及类型,格式为:“变量名字:类型

如果变量的访问权限为public,在变量的名字前面使用“+” 符号修饰;

如果变量的访问权限为protected,在变量的名字前面用“#” 符号修饰;

如果变量的访问权限为private,在变量的名字前面用“-” 符号修饰;

如果变量的访问权限为默认(Default),变量的名字前面不使用任何符号修饰

变量的访问权限 修饰符号
public +
private -
protected #
默认(Default) 不加修饰符

  1. 第三层:方法层(也叫操作层)
    在这一层中列出类的方法及返回类型,格式为:“方法名字(参数列表):类型
    修饰方法的符号与变量的修饰符号基本相同
方法的访问权限 修饰符号
public +
private -
protected #
static 方法名下加下划线
默认(Default) 不加修饰符

图示:

image.png

②、接口

UML表示接口和UML类图表示类的UML图类似,也是使用一个长方形描述一个接口的主要构成,将长方形垂直分为三层

  1. 第一层:名字层在这一层中接口的名字必须是斜体字形并且需要用用<<interface>>修饰名字
    修饰放在第一行,名字放在第二行
  2. 第二层:常量层在这一层中列出接口中的常量以及类型,格式为:“常量名字:类型
    Java接口中常量的访问权限都是public的,所以需要在常量名字前面用“+”符号修饰
  3. 第三层:方法层(也叫操作层)在这一层中列出类的方法及返回类型,格式为:“方法名字(参数列表):类型

同样,Java接口中方法的访问权限都是public的,所以需要在方法名字前面用               “+”    符号修饰

image.png

二、类图间的基本关系


1、关联关系


假设目前有两个类A和B,如果A类中的成员变量是用B类(接口)来声明的变量,那么A类和B类的关系是关联关系,称A关联于B。

如果A关联于B,那么UML类图中通过使用一条实线来连接A和B的UML图实线的起始端是A类的UML图,终点端是B的UML类图,终点使用一个指向B的UML图的方向箭头表示实线结束

image.png

①、聚合关系

聚合关系属于关联关系中的一种,是较强的关联关系,强调的是整体与部分之间的关系。在聚合关系中,成员对象是整体对象的一部分,

但是成员对象可以脱离整体对象独立存在。例如学校和学生之间的关系就可以说是一种聚合关系,学生是学校的一部分,学生也可以脱离学校独立存在

在UML中,聚合关系在关联关系带方向箭头实线的另一端上加一个空心菱形来表示

图示:

image.png

②、组合关系

组合关系也表示类之间整体和部分的关系,聚合关系说的是成员对象可以脱离整体对象而独立存在,相反地,组合关系说的是成员对象脱

离了整体对象以后不能独立存在。在组合关系中整体对象可以控制成员对象的生命周期,一旦整体对象不存在,成员对象也将不存在,成员对象和整体对象之间具有同生共死的关系。例如人的身体和心脏就是组合关系,当人的身体被毁灭时人的心脏同样也会被毁灭,并且人的心脏也无法脱离人的身体而独立存在

在UML中,聚合关系在关联关系带方向箭头实线的另一端上加一个实心菱形来表示

图示:

image.png

2、泛化关系(继承关系)


对于面向对象语言来说,UML中所说的泛化关系其实就是指类的继承关系。如果一个类是另一个类的子类,那么UML中通过使用一条实

线连接两个类的UML图来表示二者之间的继承关系实线的起始端是子类的UML图,终点端是父类的UML图,在终点端使用一个空心三角形表示实线的结束

图示:

image.png

3、依赖关系


假设目前有两个类A和B,如果A类中的某个方法的参数是用B类(接口)来声明的变量或者某个方法返回的数据类型是B类型的,那么A类和B类的关系是依赖关系,称A依赖于B。

如果A依赖于B,那么UML类图中通过使用一条虚线来连接A和B的UML图虚线的起始端是A类的UML图,终点端是B的UML类图,终点使用一个指向B的UML图的方向箭头表示虚线结束

图示:

image.png

4、实现关系


如果一个类实现了一个接口,那么类和接口的关系就是实现关系UML通过使用虚线连接类和它所实现的接口虚线的起始端是类,虚线的终点端是它实现的接口,终点端使用一个空心的三角形表示虚线的结束

图示:

image.png

总结


以上便是UML类图中的基本概念,在Java开发的过程中,使用好的设计模式能够写出更为优雅的代码,不会出现添加一个小功能,需要的代码量几乎相当于重写一次项目。在这里做一个简单的记录,作为学习Java设计模式的开始。

      设计模式是软件行业的经验总结,因此不管使用什么样的编程语言,Java也好,Python也罢,设计模式都可以自由的“侵入”,因为它不是工具,所以设计模式没有一个具体测量的标尺,它不是一种具体的技术,它更是一种指导思想,完全以自己的理解为准,自己有多了解设计模式,就有可能产生多么优秀的代码和设计!

      愿所有的平凡都伟大,愿所有的苟且都开花,期望能够在成为架构师的道路上越走越远!

其它设计模式传送门:


单例模式: 关于单例模式,你应该了解这些

工厂方法模式:你应该了解的工厂方法模式:优雅的代码永不过时

附:PowerDesigner下载链接:


链接: https://pan.baidu.com/s/1DOLSdrrqFYYbKQMd2Xrzag .

提取码:xhzy

相关文章
|
5月前
|
设计模式 网络协议 数据可视化
Java 设计模式之状态模式:让对象的行为随状态优雅变化
状态模式通过封装对象的状态,使行为随状态变化而改变。以订单为例,将待支付、已支付等状态独立成类,消除冗长条件判断,提升代码可维护性与扩展性,适用于状态多、转换复杂的场景。
805 157
|
5月前
|
设计模式 Java Spring
Java 设计模式之责任链模式:优雅处理请求的艺术
责任链模式通过构建处理者链,使请求沿链传递直至被处理,实现发送者与接收者的解耦。适用于审批流程、日志处理等多级处理场景,提升系统灵活性与可扩展性。
645 2
|
7月前
|
设计模式 缓存 Java
Java设计模式(二):观察者模式与装饰器模式
本文深入讲解观察者模式与装饰器模式的核心概念及实现方式,涵盖从基础理论到实战应用的全面内容。观察者模式实现对象间松耦合通信,适用于事件通知机制;装饰器模式通过组合方式动态扩展对象功能,避免子类爆炸。文章通过Java示例展示两者在GUI、IO流、Web中间件等场景的应用,并提供常见陷阱与面试高频问题解析,助你写出灵活、可维护的代码。
|
5月前
|
设计模式 算法 搜索推荐
Java 设计模式之策略模式:灵活切换算法的艺术
策略模式通过封装不同算法并实现灵活切换,将算法与使用解耦。以支付为例,微信、支付宝等支付方式作为独立策略,购物车根据选择调用对应支付逻辑,提升代码可维护性与扩展性,避免冗长条件判断,符合开闭原则。
1253 35
|
5月前
|
设计模式 消息中间件 传感器
Java 设计模式之观察者模式:构建松耦合的事件响应系统
观察者模式是Java中常用的行为型设计模式,用于构建松耦合的事件响应系统。当一个对象状态改变时,所有依赖它的观察者将自动收到通知并更新。该模式通过抽象耦合实现发布-订阅机制,广泛应用于GUI事件处理、消息通知、数据监控等场景,具有良好的可扩展性和维护性。
479 8
|
10月前
|
设计模式 缓存 安全
【高薪程序员必看】万字长文拆解Java并发编程!(8):设计模式-享元模式设计指南
🌟 ​大家好,我是摘星!​ 🌟今天为大家带来的是并发编程中的经典对象复用设计模式-享元模式,废话不多说让我们直接开始。
218 0
|
7月前
|
设计模式 安全 Java
Java设计模式(一):单例模式与工厂模式
本文详解单例模式与工厂模式的核心实现及应用,涵盖饿汉式、懒汉式、双重检查锁、工厂方法、抽象工厂等设计模式,并结合数据库连接池与支付系统实战案例,助你掌握设计模式精髓,提升代码专业性与可维护性。
|
7月前
|
设计模式 XML 安全
Java枚举(Enum)与设计模式应用
Java枚举不仅是类型安全的常量,还具备面向对象能力,可添加属性与方法,实现接口。通过枚举能优雅实现单例、策略、状态等设计模式,具备线程安全、序列化安全等特性,是编写高效、安全代码的利器。
|
设计模式 Java 数据安全/隐私保护
Java 设计模式:装饰者模式(Decorator Pattern)
装饰者模式属于结构型设计模式,允许通过动态包装对象的方式为对象添加新功能,提供比继承更灵活的扩展方式。该模式通过组合替代继承,遵循开闭原则(对扩展开放,对修改关闭)。
|
设计模式 Java 程序员
【23种设计模式·全精解析 | 概述篇】设计模式概述、UML图、软件设计原则
本系列文章聚焦于面向对象软件设计中的设计模式,旨在帮助开发人员掌握23种经典设计模式及其应用。内容分为三大部分:第一部分介绍设计模式的概念、UML图和软件设计原则;第二部分详细讲解创建型、结构型和行为型模式,并配以代码示例;第三部分通过自定义Spring的IOC功能综合案例,展示如何将常用设计模式应用于实际项目中。通过学习这些内容,读者可以提升编程能力,提高代码的可维护性和复用性。
3452 1
【23种设计模式·全精解析 | 概述篇】设计模式概述、UML图、软件设计原则