考虑以下Java类:
public class GenericActionService {
public void runAction(int actionNo) {
.... (some stuff)
runActionCode(actionNo);
.... (some more stuff)
}
protected void runActionCode(int actionNo) {
switch (actionNo) {
case 100:
doSomeGenericAction();
break;
....
default:
throw new IllegalArgumentException("Invalid Action!");
}
}
}
并继承子类:
public class SpecificActionService extends GenericActionService {
protected void runActionCode(int actionNo) {
switch (actionNo) {
case 1000:
doSomeSpecificAction();
break;
....
default:
super.runActionCode(actionNo);
break;
}
}
}
现在,我不必担心这是否是特别好的设计,并且这些类是高度虚构的。
我想知道的是,您如何用某种图表表示这种设计?可以使用UML序列图表示吗?如果不是,应该使用哪种类型的图表?
特别是,当某人在
runAction()
实例上调用SpecificActionService
方法时,我想绘制流程/序列图。 例如,考虑在
runAction(1000)
上调用SpecificActionService
时的执行流程。我希望该图显示以下内容:SpecificActionService.runAction(1000)
GenericActionService.runAction()
中运行一些代码SpecificActionService.runActionCode(1000)
之前GenericActionService.runActionCode(1000)
SpecificActionService.runActionCode(1000)
之前GenericActionService.runAction(1000)
问题是有些人认为这是“现代意大利面条代码”,尤其是在涉及这种继承结构时似乎并没有“明白”的经理,所以我想记录一下这种流程,以便他们理解。
给那些为我画一幅漂亮图画的人加分。 :-)
最佳答案
特别是,我想绘制流程/ 序列
因此,我将使用序列图。这可以显示对象如何一起工作。它没有显示继承结构以及如何编写类,但是您还可以稍后添加类图。
这是一张花哨的简单图像,看起来如何:
还有plantuml源代码,如果这还不够好,并且您想尝试一下:)。
otherObject->SpecificActionService:runActionCode(1000)
SpecificActionService->SpecificActionService:doSomeSpecificAction()
otherObject->SpecificActionService:runActionCode(100)
SpecificActionService->GenericActionService :runActionCode(100)
GenericActionService->GenericActionService:doSomeGenericAction()