UML类图及Java实现

简介: 我想完整记录一下Java版的设计模式的内容,本篇是关于UML类图,它与设计模式息息相关。图文形式结合介绍UML类图,并且在理解困难的地方做了解释。
我想完整记录一下Java版的设计模式的内容,本篇是关于UML类图,它与设计模式息息相关;或许这篇文章已经足够经典: 30分钟学会UML类图 - 知乎 (zhihu.com);如果不嫌弃也可以看看我这个,就是比较简单直接。

本文含有仓库链接:Java-设计模式,可以结合起来学习。

为什么要学UML图?我认为这是一种逻辑的体现,普通写Demo可能没有这种感觉,但当你学到深入时,必须重温设计模式。因为很多源码的底层(例如Spring、Mybatis...)就是一种设计模式的体现,而设计模式只是一种思想,根据这种思想选择合适的设计模式并改动,最终形成底层逻辑...,读源码很痛苦,我们将其抽象成逻辑图会帮助我们理解源码设计的思路,而这一切原来就是从基础又开始的,所以...再温一遍,反反复复。

优点:

  1. 逻辑清晰,从软件工程规范的角度,应该对系统有完整的设计(没点功力还真难构建呢)
  2. 便于分工

通用

符号含义:

  • +表示 public
  • -表示 private
  • #表示 protected
  • 不带符号表示 default

用于定义一个类的属性和方法。

UML

image.png

Java

public class Person {
    private String name;

    public String getName(){
        return name;
    }

    public void setName(String name){
        this.name = name;
    }
}

接口

主要定义方法接口Interface,让子类去实现该接口,做到多继承或者代码规范。

UML

image.png

Java

public interface PersonMapper {
    public Person getUserByName(String userName);
}

实现

类通过implements实现Interface接口,并实现接口中的方法。

UML

image.png

Java

public class PersonMapperImpl implements PersonMapper {
    @Override
    public Person getUserByName(String userName) {
        return null;
    }
}

关联

A关联B,则B是作为A的属性存在,该属性也可以是A类中的局部变量,在局部中担属性存在。它有变种:聚合、组成、依赖。

UML

image.png

Java

public class Car {
    private Tyre tyre;
}
public class Tyre {
}

依赖

A类中某个方法的参数需要传入B这个类。

UML

image.png

Java

public class PersonController {
    public R save(Person person){
        // 保存
        return R.success();
    }
}

这两个:“ 聚合 ” 与 “ 组成 ”经常傻傻分不清楚;关联中:依赖、聚合、组成,其实都是关联的另外三种形式,都是A类中含有B类,但是特点不一样。

  1. 聚合:A类中的属性含有B类,但是一般在外部将B初始化后,通过Set的方式或者A类的有参构造方法中传入。
  2. 组成:A类中的属性含有B类,且B类的初始化一般在A类的构造方法中随着A类一块初始化,与A同生同死
  3. 依赖:一般是在A中的方法中使用,B类声明周期在A的方法中,A类本身不含B类的属性定义。

聚合

公司倒了,员工还在。

UML

image.png

Java

public class Company {
    private Person person;

    public void setPerson(Person person) {
        this.person = person;
    }
}

外部传入Person

public class Main {
    public static void main(String[] args) {
        Person person = new Person();
        Company company = new Company();
        company.setPerson(person);
    }
}

组成

心脏...是鸟的组成部分,缺它不可,“ 我亡它亡 ”。

UML

image.png

Java

public class Bird {
    private Heart heart;
    public Bird() {
        heart = new Heart();
    }
}

心脏

public class Heart {
}

继承

子类可以得到父类所有(允许访问)的属性和方法。Java是单继承。,一个子类只能extends一个父类。

UML

image.png

Java

public class Man extends Person {
    private String gender;

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }
}

总结

UML.drawio.png

目录
相关文章
|
20天前
|
uml
UML之类图
UML之类图
26 1
|
2月前
|
数据可视化 Java uml
IDEA中一个被低估的功能,一键把项目代码绘制成UML类图
IDEA中一个被低估的功能,一键把项目代码绘制成UML类图
27 1
|
7月前
|
uml
IDEA使用插件绘制UML类图+PlantUML语法讲解
IDEA使用插件绘制UML类图+PlantUML语法讲解
323 0
|
4月前
|
设计模式 数据可视化 程序员
软件设计模式:UML类图
软件设计模式:UML类图
|
2月前
|
存储 Java uml
Java-UML类图简介
Java-UML类图简介
18 0
|
4月前
|
Java uml
【开发规范】UML类图
【1月更文挑战第27天】【开发规范】UML类图
|
4月前
|
uml
UML类图
UML类图
47 0
|
4月前
|
机器人 uml 数据安全/隐私保护
快速学习UML类图查看
快速学习UML类图查看
37 0
|
9月前
|
uml
UML类图的 绘制标准 及 绘制工具
讲解绘制类图的标准,以及如何使用ProcessOn(在线工具 无需下载)轻松绘制类图
155 0
|
4月前
|
Java 程序员 uml
【程序员小知识】使用 PlantUML 画 UML(上)类图
【程序员小知识】使用 PlantUML 画 UML(上)类图
167 0