如何在类图中显示单例关系

2024-01-31

如果一个类包含指向单例类的指针,它可以是aggregation?

据我了解,这不可能是has-a关系,因为该类不会创建单例类的实例,它只是像这样使用它association关系。


标题并不像所写的那样100%完全有意义。有单例类,但没有真正的单例关系。任何关系都可以在任一端分配重数,因此,如果您指的是一对一关系,则只需在两端分配重数 1 即可。

类也可以有多重性。你不经常看到它被使用,除了一种情况:单例。

当 A 具有或包含或引用 B 时,UML 中的紧密性基本上分为三个级别。

聚合(未填充的菱形箭头)意味着包含不是排他的,并且包含的​​对象不与包含的对象共享其生命周期的任何方面。在实现中,这通常是一个指针。

组合(实心菱形箭头)意味着当包含对象被破坏时,所包含的对象也会被破坏。让它发挥作用通常意味着收容是排他的。在实现中,这通常是一个指针,其析构函数在包含类的析构函数中被调用(尽管它可能不会在包含类的构造函数中创建)。

定向关联或成员属性(UML 中的相同)意味着所包含的对象是包含对象的状态的一部分,或者是包含对象的组成部分(如果您愿意的话)。在实现中,这通常意味着引用不是指针,或者所包含的对象是与包含对象共同创建和销毁的。

单例的聚合是完全允许的(即使来自几个不同的类),因为聚合根据定义是非排他的。

组合有点不确定,除非包含类也是单例。

属性/定向关联很可能是错误的。如果包含的类是单例,则将包含的类也设置为单例是没有任何意义的,因为这是隐含的。并且如果包含的类在两个不同的类中用作成员,则它不能是单例。

除了上述之外,您当然还可以根据需要添加任意数量的使用关系。这在所有设计中都很常见,并且意味着关系源端的类调用目标端类中的方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在类图中显示单例关系 的相关文章

随机推荐