深入了解Java設計模式之UML類圖
前言:什么是 UML
定義:UML 即 Unified Modeling Language 統(tǒng)一建模語言,是用來設計軟件的可視化建模語言。
特點:簡單、統(tǒng)一、圖形化、可以表達軟件設計中的動態(tài)與靜態(tài)信息。
分類:用例圖、類圖、對象圖、狀態(tài)圖、活動圖、時序圖、協(xié)作圖、構件圖、部署圖 9 種。
類圖概念
定義:類圖是面向?qū)ο蠼5闹饕M成部分,顯示了模型的靜態(tài)結構,特別是模型中存在的類、類的內(nèi)部結構以及它們與其他類的關系等,但不顯示暫時性的信息。
作用:系統(tǒng)分析和設計階段的重要產(chǎn)物,系統(tǒng)編碼和測試的重要模型。
類的表示方式
可見性符號
- + :表示 public
- - :表示 private
- # :表示 protected
- 什么都不寫 表示 default
屬性的表示方式:可見性 屬性名 : 屬性類型 [ = 默認值]
方法的表示方式:可見性 方法名(參數(shù)列表) [ : 返回值類型]
其中,[ ] 里的內(nèi)容是可選的,可寫可不寫。
public class Employee { private String name; private int age; private String address; public void work(){ // doSomething } }
類與類之間關系的表示方式
關聯(lián)關系
關聯(lián)關系是對象之間的一種引用關系,用于表示一個類對象對另一個類對象之間的聯(lián)系。
關聯(lián)關系也是類與類之間最常用的一種關系,分為一般關聯(lián)關系、聚合關系和組合關系。
關聯(lián)又分為單向關聯(lián)、雙向關聯(lián)和自關聯(lián)。
單向關聯(lián)
單向關聯(lián)使用帶箭頭的實直線表示,箭頭指向被引用的對象。
public class Address { } public class Customer { private Address address; }
雙向關聯(lián)
雙向關聯(lián)使用不帶箭頭的實直線表示,因為雙方各自都持有對方類型的成員變量,所以不用使用箭頭刻意的表示誰引用了誰。
public class Product { private Customer customer; } public class Customer { private List<Product> products; }
自關聯(lián)
自關聯(lián)使用一個帶箭頭且指向自己的實直線表示,自己包含自己。
public class Node { private Node subNode; }
聚合關系
聚合關系其實是關聯(lián)關系的一種,是強關聯(lián)關系,是整體和部分之間的關系。
聚合關系通過成員對象來實現(xiàn),其中成員對象是整體對象的一部分,但成員對象可以脫離整體對象而獨立存在。如:大學(整體)里有很多老師(部分),這些老師屬于這個大學,但他們又可以脫離學校單獨存在。
聚合關系使用帶空心菱形的實直線來表示,菱形指向整體。
組合關系
組合關系是一種更強烈的聚合關系,同樣表示的是類之間整體和部分的關系,但相較于聚合關系,組合關系中的整體對象可以控制部分對象的生命周期,一旦整體對象不存在了,部分對象也將不復存在。如:頭(整體)和嘴(部分)的關系,頭沒了,嘴自然也不在了。
組合關系使用帶實心菱形的實直線表示,菱形指向整體。
public class Head { private Mouth mouth; } public class Mouth { public void eat() { // doSomething } }
依賴關系
依賴關系是一種使用關系,是對象之間耦合性最弱的一種關聯(lián)方式,是臨時性的關聯(lián)。使用場景主要為某個類的方法通過局部變量、方法的參數(shù)來訪問另一個類(被依賴類)中的某些方法。
依賴關系使用帶箭頭的虛直線表示,箭頭指向被依賴類。
public class Car { public void move() { // doSomething } } public class Driver { private String name; public void drive(Car car) { car.move(); } }
繼承關系
繼承關系是對象之間耦合性最大的一種關系,表示一般與特殊的關系,是父子類之間的一種繼承關系。
繼承關系又可稱為泛化關系,使用帶空心三角箭頭的實直線表示,箭頭從子類指向父類。
public class Person { private String name; private int age; public void speak() { // doSomething } } public class Student extends Person{ private String studentNo; public void study() { // doSomething } } public class Teacher extends Person{ private String teacherNo; public void teach() { // doSomething } }
實現(xiàn)關系
實現(xiàn)關系是接口與實現(xiàn)類之間的關系。
實現(xiàn)關系使用帶空心三角箭頭的虛線表示,箭頭從實現(xiàn)類指向接口,箭頭也是虛線。
public interface Vehicle { void move(); } public class Car implements Vehicle { @Override public void move() { // doSomething } } public class Ship implements Vehicle { @Override public void move() { // doSomething } }
到此這篇關于深入了解Java設計模式之UML類圖的文章就介紹到這了,更多相關Java UML類圖內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Fluent Mybatis,原生Mybatis,Mybatis Plus三者功能對比
本文主要介紹了Fluent Mybatis,原生Mybatis,Mybatis Plus三者功能對比,分享給大家,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-08-08