Unified Modeling Language

小臭的作业里经常要求提交一个java classes之间的关系图,intellij里自带一个生成这个关系图的功能。关系图 的名字叫做UML(Unified Modeling Language),我就很好奇这玩意儿是不是通用的,也是为了更方便画图,就去研 究了一下,结果发现UML居然也是有ISO标准的。码农工作里的很多食物都是可以用UML图表示的,比如微服务之间 的关系,java类之间的继承关系,数据库表格之间的键值关系。我以前做设计文档的时候都习惯用google drawing 之类的简单画图工具画这样的关系图,现在想想,也许有些地方可以借鉴UML。

简单介绍

Wiki

所有这类关系图,其实本质上就是由两部分构成:实体和关系,说的更抽象一点,就是点和线。有很多UML的可视 化绘图工具,我记得小时候听说过的微软的Visio就是支持UML的。但是我自然对收费的东西是不感冒的,于是乎发 现了PlantUML以及根据PlantUML语法画图的graphviz(似乎过去几年里对abcdefg as code越来越感兴趣了)。

PlantUML里有很多标准的点。比如Class,Node,Component之类的,一个简单的java class可以写成:

class Dummy {
  String data
  void methods()
}

关系也很简单,给java class写一个关系就可以用下面的语句:

Class01 <|-- Class02
Class03 *-- Class04
Class05 o-- Class06
Class07 .. Class08
Class09 -- Class10

从上可以请益看出实线(--)、虚线(..),空心终点(o),失心终点(*),箭头终点(<|)。可以说是一个非常 简单好理解的语法。更多语法

VSCode

VSCode有个现成的PlantUML插件, 可以利用graphviz生成plantuml的结果图,非常方便。