假设一个抽象类X及其子类Y和Z。如何在UML类图中表示Y和Z应该是单例。是否有可能表示所有X个子类都必须是单例?
答案 0 :(得分:1)
要指定X的所有子类都是单例,可以在花括号之间编写一个约束:{X的每个子类都是单例}。该约束应放在类矩形的约束区中。
UML 2.5规范§7.6.4定义了约束的一般表示法,而§9.2.4指定了如何显示分类器的约束:
如果分类器拥有约束,则符合性工具可以实施一个分隔间以显示列出的拥有的约束 在所属分类器矩形的单独隔间中。该可选隔层的名称是 “约束。”
或者,您可以在X的每个子类上给出一个单例指示。根据您的措辞,我认为那不是您想要的。无论如何,最新版本的UML(2.5.1)没有标准的方式来表明类是单例。有人通过在矩形的右上角写1来表示。但是,这不是有效的UML。您可以将其用于零件,但不能用于类。相反,您可以发明自己的原型“ singleton”。
答案 1 :(得分:0)
UML 2.5规范的11.4.4节说:
使用依赖性可以将InstanceSpecification与 Class的构造函数,描述由 构造函数操作。操作是客户,创建 例如供应商。
答案 2 :(得分:0)
这是另一种可能性:您可以使用<<singleton>>
原型来装饰类。我一直以这种方式使用它,编码人员知道如何处理。它不是UML标准,但请看最后一句话。