- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一些相关的接口(interface)和类,我想在 UML 中表示(抱歉这些关系,我不知道如何使用 StarUML 正确地做到这一点):
接口(interface) ISMS 实现 IMessage 和 IStorable 的想法,而不是直接让 SMS 类自己实现这两个接口(interface),旨在使项目更加模块化、可维护且更易于测试。
这是设计的好方法吗?如果是这样,这是在 UML 类图中表示它们的好方法,还是有更好的方法来表示接口(interface)及其与 UML 中其他接口(interface)/类的关系?
最佳答案
关于 Bruno's already very clear answer 我有几点要说的.
将接口(interface)分解为IStorable
和IMessage
乍一看似乎是interface segregation principle 的合理应用。 .
将这两个接口(interface)组合成一个可重用的 ISMS
接口(interface),而不是直接在具体的 SMS
类中实现它们,在这方面将使您的代码更易于维护,因为它很容易允许用替代实现替换 SMS 实现(如果您认为 SMS 功能可以是特定于平台的,这是有意义的)。
问题是 SMS
和 email
是否不能互换使用。但只有您可以回答这个问题:如果您的设计需要保持这些通信 channel 的不同(并且您的实际代码可能会在两个接口(interface)之间添加一些差异),那很好。但如果不是,允许这种互换性并用一个更通用的 INotification
替换 ISMS
和 IEmail
是有意义的。
首先,我想强调 Bruno 关于泛化(普通线)和 realization 之间的区别的评论。 (虚线)。
也许我是守旧派,但我建议不要使用圆圈作为界面,而是更传统的 interface与接口(interface)名称上方带有关键字 «interface»
的类框一样。尤其是当您拥有 Assets 和运营时。
在我看来,圆圈更适合界面的 Lollipop 表示法。当您对接口(interface)本身没什么可说的,但想显示一个类实现了哪些接口(interface)( Lollipop )或依赖于哪些接口(interface)(套接字)时,这非常实用。然后在另一个更详细的图表中定义接口(interface)细节。理论上您可以将这两个符号合并到同一个图表中,但我个人认为它的可读性较差,因此不建议这样做。
关于interface - 如何在 UML 中显示接口(interface)和类之间的关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64239374/
我是一名优秀的程序员,十分优秀!