之前介绍了一些UML图基础的概念,这次推荐一个快速绘制UML图的工具
绘制工具
在经历了一番折腾后,最终还是选择了 PlantUML,原因是看重其使用特有的语言书写接口,类,并自动生成UML. 同时,自己也在使用 VSCode ,发现 PlantUML 在 VSCode 上提供了插件,于是直接在 VSCode 上安装了 PlantUML的插件.
同时,要实时预览,还要安装 graphviz
, 如果是 Mac,那么直接使用 homebrew 安装即可: brew install graphviz
, 安装完成很后,使用 dot -v
查看是否安装成功
在 VSCode 中,使用 alt
+ d
进行实时预览
常用语法
类声明
- 接口声明: interface 接口名
- 抽象类声明: abstract class 类名
- 类声明: class 类名
- 注解类声明: annotation 注解名
- 枚举类声明: enum 枚举类名
属性/方法修饰符
关系 |
符号 |
public |
+ |
protected |
# |
default |
~ |
private |
- |
PlantUML用下面的符号来表示类之间的关系:
关系 |
符号 |
说明 |
实现 |
`< |
..` |
泛化 |
`< |
–-` |
依赖 |
<.. |
Dependency, 带箭头的虚线表示 |
组合 |
*–- |
Composition, 带实心的菱形的直线表示 |
聚合 |
o–- |
Aggregation, 带空心菱形的直线表示 |
关联 |
<– |
Association |
单向关联 |
<-- |
Association,带箭头的实线表示 |
双向关联 |
-- |
直线表示 |
多重性关联 |
“1..*”<--"0..*" |
关联直线上用一个数字或者一个数字的范围表示 |
一个例子
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
| @startuml
interface IUser
abstract class BaseUser class User class ShadowUser
IUser <|.. BaseUser IUser <|.. ShadowUser BaseUser <|-- User
interface IUserCenter { + IUser getCurrentUser() + boolean isLogin() + void queryUserProfile(int uid, string sid) + void search(int uid, string sid) + IUpdater updater(int uid, string sid) }
class UserCenter { - HostUserManager - GuestUserManager }
IUserCenter <|.. UserCenter
interface IUserManager { void getUser(int uid, string sid) void getProfile(int uid, string sid) }
class HostUserManager { - HostUserCache - HostUpdater } class GuestUserManager { - GuestUserCache - GuestUpdater }
IUserManager <|..HostUserManager IUserManager <|..GuestUserManager
interface IUserCache { + void cacheUser(IUser user) + void deleteUser(int uid) + boolean hasUser(int uid) }
class HostUserCache { - SharedPreference sp } class GuestUserCache { - HashMap cache } IUserCache <|..HostUserCache IUserCache <|..GuestUserCache
interface IUpdater { + void setXXX(var xxx) + void update() } class HostUpdater class GuestUpdater IUpdater <|..HostUpdater IUpdater <|..GuestUpdater
note top of IUpdater:主态update方法之后,需要拉取下User,客态update方法之后,直接设置回UserCache即可
UserCenter <-- HostUserManager UserCenter <-- GuestUserManager
HostUserManager <-- HostUserCache HostUserManager <-- HostUpdater
GuestUserManager <-- GuestUserCache GuestUserManager <-- GuestUpdater
note as N1 #red IUserCenter 作为User相关操作对外暴露的唯一对象 UserCache,UserManager 均为内部实现 end note
@enduml
|
参考连接
本文作者:
Zachaxy
版权声明:
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。