plantuml简介
简介
最近在学习设计模式,但是在画类图的时候,有一堆的画图工具可以选择,但总感觉用的不顺手。于是在网上找到了这个神奇的语言。PlantUML是一个开源项目,支持时序图、用例图、类图、活动图、组件图、状态图、对象图等的绘制。简而言之,就是用写代码的方式画图。几行代码,输出标准结构图,不用再去考虑结构、对齐等琐事啦!
效果预览
如下简单的语法表达类图之间的关系
@startuml
Class01 <|-- Class02
Class03 <|.. Class04
Class05 *-- Class06
Class07 o-- Class08
Class09 <.. Class10
Class11 <-- Class12
@enduml
效果如下:
再看一下复杂一点的装饰者模式类图,代码如下
@startuml
namespace Decorator{
interface Component
interface Decorator
Component : +operation():void
ConcreateComponent : +opreation():void
Decorator : -component:Component
Decorator : +opreantion():void
ConcreateDecorator1 : +opreation():void
ConcreateDecorator1 : +addBehavior():void
ConcreateDecorator2 : +opreation():void
ConcreateDecorator2 : +addBehavior():void
Decorator <|-- ConcreateDecorator1
Decorator <|-- ConcreateDecorator2
Component <|.. Decorator
Component <|.. ConcreateComponent
Decorator o-- Component
note bottom of Decorator
component.opreation();
end note
note bottom of ConcreateDecorator1
super.operation();
addBehavior();
end note
note bottom of ConcreateDecorator2
super.operation();
addBehavior();
end note
}
@enduml
效果图:
时序图长这样:
@startuml
title 时序图
== 鉴权阶段 ==
Alice -> Bob: 请求
Bob -> Alice: 应答
== 数据上传 ==
Alice -> Bob: 上传数据
note left: 这是显示在左边的备注
Bob --> Canny: 转交数据
... 不超过 5 秒钟 ...
Canny --> Bob: 状态返回
note right: 这是显示在右边的备注
Bob -> Alice: 状态返回
== 状态显示 ==
Alice -> Alice: 给自己发消息
@enduml
环境配置
这里主要介绍 Mac + VS Code + Markdown Preview Enhanced 实现PlantUML预览的配置过程
Mac环境支持plantUML的markdown编译步骤
brew install libtool
brew link libtool
brew install graphviz
brew link --overwrite graphviz
如果没有gem,先安装gem。然后执行下面语句安装 asciidoctor。
gem install asciidoctor
安装完支持环境之后,VS Code里装上 Markdown Preview Enhanced 就可以在markdown里编辑和预览效果啦!
plantuml语法:http://plantuml.com/
目前,sublime、Atom、VS Code、Webstorm都有相对应的插件来实现在编辑器里编辑和预览plantUML。
plantuml编辑器整理
这里还有一些其他的编辑器推荐。大部分都是在线预览版本,也有编辑器插件。
1、https://www.planttext.com/
2、http://www.plantuml.com/plantuml
3、https://sujoyu.github.io/plantuml-previewer/
4、Chrome插件 UML Diagram Editor (渲染效果模糊,速度慢)
5、Intellij Idea 插件(Android Studio 当然也支持):PlantUML integration
参考
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Maple's Blog!
评论