使用提出的想法 工厂方法设计模式锟序列图 ,多态调用由保护条件控制的多重场景建模。因此,对于每个多态方案,动态绑定(多态调用)表示为“方案框”。因此,这是一个显示多态调用的单一模型(序列图)。
从字面上看,作者的帖子评论了你的建模策略:
“事实证明,模拟我实际上的操作流程 建模多态,后期绑定和所有这些东西的工作原理。一世 猜测在这种情况下,序列图不仅无关紧要, 但实际上令人困惑。但我不得不尝试。“
总而言之,显示多态调用是一项非常重要的任务,我认为清晰可视化多态实际上对软件工程师来说是一个开放的挑战。
由于我在评论中提出的原因(每个对象都有自己的生命线,每个消息都是一次调用等),尝试在单个图中执行此操作很困难(如果不是不可能和错误的话)。
此外,多态性的美妙之处在于,在某种程度上(多态调用),我们没有 想 了解细节。打电话给 draw() 它只是 作品 ,不管实施类。细节隐藏在抽象中。 UML图在显示基本信息时非常有用。
draw()
在你的回答中,每个形状只接收消息 draw() (我们没有看到序列图中的行为有任何差异)。如果你真的需要澄清实现之间的差异 Circle 等等,我建议在单独的图表中表示多态调用,以便我们可以看到使用哪些不同的对象来实现 draw() 功能,例如:
Circle
的 序列图 强> 他们非常善于展示互动,他们不太适合描绘模型的结构属性。
一个 的 类图 强> 可能是你需要的。下图是显示多态性的类图的一个例子(即 getArea 方法)。
getArea