我用plantuml画类图,但是连接线的位置不是我期望的(挤在一起),代码如下:
@startuml "mediator module"
' 默认线是圆弧状
' 多段线
' skinparam linetype polyline
' ortho 是垂直线
skinparam linetype ortho
class Mediator {
+{abstract} createCtrl() : void
+{abstract} ctrlChanged(CtrlParent*) : void
}
class ConcrMediator {
+virtual createCtrl() : void
+virtual ctrlChanged(CtrlParent*) : void
}
class CtrlParent {
#m_pmediator : Mediator
+virtual Changed() : void
+{abstract} Enable(bool) : void
}
together {
class Button {
+virtual Enable(bool) : void
}
class RadioBtn {
+Selected(bool) : void
+virtual Enable(bool) : void
}
class EditCtrl {
+virtual Enable(bool) : void
+isContentEmpty : bool
}
}
Mediator <|---down ConcrMediator
CtrlParent <|---right Button
CtrlParent <|---down RadioBtn
CtrlParent <|---down EditCtrl
CtrlParent o-left-> Mediator
ConcrMediator o-> RadioBtn
note on link : mp_rbtn1、mp_rbtn2
ConcrMediator o-right-> EditCtrl
note on link : mp_edtctrl1, mp_edtctrl2
ConcrMediator o-> Button
note on link : mp_login、mp_logout
@enduml
并绘制结果:
我尝试切换线型正交/折线和默认值,添加在一起(Button、RadioBtn、EditCtrl),但不起作用,我期望的 ConcrMediator 连接线有一些间隙,就像:
当 CtrlParent 的子类处于同一(垂直)级别时,会非常混乱(尤其是使用
note on link
)。所以,我交错了这些子类的垂直距离(这不完全是你想要的,但我希望它更好):
@startuml "mediator module"
' 默认线是圆弧状
' 多段线
' skinparam linetype polyline
' ortho 是垂直线
skinparam linetype ortho
skinparam nodesep 150
together {
class CtrlParent {
#m_pmediator : Mediator
+virtual Changed() : void
+{abstract} Enable(bool) : void
}
class Button {
+virtual Enable(bool) : void
}
class RadioBtn {
+Selected(bool) : void
+virtual Enable(bool) : void
}
class EditCtrl {
+virtual Enable(bool) : void
+isContentEmpty : bool
}
}
class Mediator {
+{abstract} createCtrl() : void
+{abstract} ctrlChanged(CtrlParent*) : void
}
class ConcrMediator {
+virtual createCtrl() : void
+virtual ctrlChanged(CtrlParent*) : void
}
Mediator <|-- ConcrMediator
' vary the vertical distance by making line longer
CtrlParent <|---- Button
CtrlParent <|--- EditCtrl
CtrlParent <|-- RadioBtn
CtrlParent o-l-> Mediator
ConcrMediator o-> RadioBtn
note on link: mp_rbtn, mp_rbtn2
ConcrMediator o-r-> EditCtrl
note on link: mp_edtctrl1, mp_edtctrl2
ConcrMediator o-> Button
note on link: mp_login, mp_logout
@enduml