如何在 UML 中对混入建模

How to model a mixin in UML

使用 UML 表示 "mixin" 的最佳方法是什么?

this article 中所述:

In object-oriented programming languages, a mixin refers to a defined amount of functionality which can be added to a class. An important aspect of this is that it makes it possible to concentrate more on the properties of a particular behaviour than on the inheritance structures during development.

我将提供有关我的特定用例的更多详细信息。 我有一组 classes 可以模拟不同类型的对象。因为都可以放在一个storage上,所以我想用一个mixin来实现"being stored"相关的所有功能。 当然,我可以使用抽象 classes 但我不喜欢它,因为这些 classes 应该是 classes 不同层次结构的一部分,而且它们可以存储的事实是只有一个辅助 属性。 另一种选择是使用组合并将 "storage node" 作为此 classes 的字段添加。出于同样的原因,我也不喜欢这个选项:我不想在 classes 和存储之间创建任何依赖关系。

我已经使用基于动态代理的 mixin 在 Java 中实现了解决方案,我想用清晰的 UML class 图记录该解决方案。有没有标准的方式来表示这个 mixin?

我也想知道是否也对 mixin 的实现方式(使用代理)进行建模是个好主意,还是使用更抽象的表示更好。

谢谢

实际上有很多方法可以在 UML 中对此进行建模:

一种方法是使用 <<mixin>> 或类似方法对操作和属性进行定型,然后使用标记值来描述您从哪里获得它们。

另一个(我更喜欢)是实际使用 <<mixin>> 定型泛化,并在上面附上注释,说明应该混合哪些 operations/properties。这将为实施者提供 "lean implementation of the general class".

的指南

最终,您可以创建 <<mixin>> sub-classes,其中 ops/props 的子集要混合在最终 class 中,然后从中进行概括。

也许有人可以想出更多的解决方案。使用最适合您的方法。 UML 中没有通用的混合模式(据我所知)。