我有一些相关的接口和类想要在 UML 中表示(抱歉这些关系,我不知道如何使用 StarUML 正确地做到这一点):
实现 IMessage 和 IStorable 的接口 ISMS 的想法,而不是让 SMS 类直接实现这两个接口,旨在使项目更加模块化、可维护且更易于测试。
这是一个好的设计方法吗?如果是这样,这是在 UML 类图中表示它们的好方法吗?还是有更好的方法来表示接口及其与 UML 中其他接口/类的关系?
我有几点评论Bruno的答案已经很明确了.
你的设计
将接口分解为IStorable
and IMessage
乍一看似乎是一个合理的应用接口隔离原则.
将两个接口组合成一个可重用的接口ISMS
接口而不是直接在具体中实现它们SMS
在这方面,类将使您的代码更易于维护,因为它可以轻松地用替代实现替换 SMS 实现(如果您认为 SMS 功能可以是特定于平台的,这是有意义的)。
然而问题是如果SMS
and email
不能互换使用。但只有您可以回答这个问题:如果您的设计需要保持这些通信渠道不同(也许您的真实代码在两个接口之间添加了一些差异),那就没问题。但如果没有,允许这种互换性和替换是有意义的ISMS
and IEmail
与一个更一般的INotification
.
您的 UML 表示
首先,我想强调布鲁诺关于概括(简单线)和实现(虚线)。
也许我是老派,但我建议不要使用圆圈作为界面,而是使用更传统的界面与带有关键字的类框一样«interface»
位于接口名称上方。特别是如果您拥有财产和业务。
在我看来,圆圈更适合界面的棒棒糖表示法。当您对接口本身没什么可说的,但想要显示一个类实现了哪些接口(棒棒糖)或依赖于哪些接口(套接字)时,这非常实用。然后在另一个更详细的图中定义接口细节。理论上,您可以将这两个符号合并在同一个图表中,但我个人认为它的可读性较差,因此不建议这样做。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)