考虑以下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)
问题是有些人认为这是现代意大利面条代码"特别是那些似乎并没有得到它的经理人。当谈到这种继承结构时,我想要记录这个流程,以便他们理解。
为那些为我画出漂亮照片的人的额外积分。 : - )
答案 0 :(得分:3)
特别是,我想绘制流/ 序列
所以我会使用序列图。这可以显示对象如何协同工作。它没有向您展示继承结构以及如何编写类,但为此您还可以在以后添加类图。
plantuml源代码,如果这还不够好,你想试验一下:)。
otherObject->SpecificActionService:runActionCode(1000)
SpecificActionService->SpecificActionService:doSomeSpecificAction()
otherObject->SpecificActionService:runActionCode(100)
SpecificActionService->GenericActionService :runActionCode(100)
GenericActionService->GenericActionService:doSomeGenericAction()