gpt4 book ai didi

interface - 如何在 UML 中显示接口(interface)和类之间的关系?

转载 作者:行者123 更新时间:2023-12-05 02:48:55 24 4
gpt4 key购买 nike

我有一些相关的接口(interface)和类,我想在 UML 中表示(抱歉这些关系,我不知道如何使用 StarUML 正确地做到这一点):

enter image description here

接口(interface) ISMS 实现 IMessage 和 IStorable 的想法,而不是直接让 SMS 类自己实现这两个接口(interface),旨在使项目更加模块化、可维护且更易于测试。

这是设计的好方法吗?如果是这样,这是在 UML 类图中表示它们的好方法,还是有更好的方法来表示接口(interface)及其与 UML 中其他接口(interface)/类的关系?

最佳答案

关于 Bruno's already very clear answer 我有几点要说的.

您的设计

将接口(interface)分解为IStorableIMessage 乍一看似乎是interface segregation principle 的合理应用。 .

将这两个接口(interface)组合成一个可重用的 ISMS 接口(interface),而不是直接在具体的 SMS 类中实现它们,在这方面将使您的代码更易于维护,因为它很容易允许用替代实现替换 SMS 实现(如果您认为 SMS 功能可以是特定于平台的,这是有意义的)。

问题是 SMSemail 是否不能互换使用。但只有您可以回答这个问题:如果您的设计需要保持这些通信 channel 的不同(并且您的实际代码可能会在两个接口(interface)之间添加一些差异),那很好。但如果不是,允许这种互换性并用一个更通用的 INotification 替换 ISMSIEmail 是有意义的。

您的 UML 表示

首先,我想强调 Bruno 关于泛化(普通线)和 realization 之间的区别的评论。 (虚线)。

也许我是守旧派,但我建议不要使用圆圈作为界面,而是更传统的 interface与接口(interface)名称上方带有关键字 «interface» 的类框一样。尤其是当您拥有 Assets 和运营时。

在我看来,圆圈更适合界面的 Lollipop 表示法。当您对接口(interface)本身没什么可说的,但想显示一个类实现了哪些接口(interface)( Lollipop )或依赖于哪些接口(interface)(套接字)时,这非常实用。然后在另一个更详细的图表中定义接口(interface)细节。理论上您可以将这两个符号合并到同一个图表中,但我个人认为它的可读性较差,因此不建议这样做。

关于interface - 如何在 UML 中显示接口(interface)和类之间的关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64239374/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com