表示" mixin"的最佳方式是什么?使用UML?
如this article中所述:
在面向对象的编程语言中,mixin指的是定义的 可以添加到类中的功能量。一个重要的 这方面的一点是它可以更多地集中在 特定行为的属性而不是继承的属性 发展过程中的结构。
我将提供有关我的特定用例的更多详细信息。 我有一组类,它们为不同类型的对象建模。因为所有这些都可以存储在存储器中,所以我想使用mixin来实现与存储"相关的所有功能。 当然,我可以使用抽象类,但我不喜欢它,因为这些类应该是不同类的层次结构的一部分,并且它们可以存储的事实只是次要属性。 另一种选择可以是使用组合并添加"存储节点"作为这个类的领域。出于同样的原因,我不喜欢这个选项:我不想在类和存储之间创建任何依赖关系。
我已经使用基于动态代理的mixin在Java中实现了该解决方案,我想用清晰的UML类图记录该解决方案。有没有一种标准的方式来表示这种混合?
我也想知道对mixin如何实现(使用代理)进行建模是否是一个好主意,或者最好使用更抽象的表示。
谢谢
答案 0 :(得分:3)
实际上有很多方法可以在UML中对此进行建模:
一种方法可能是使用<<mixin>>
等对操作和属性进行刻板印刷,然后使用标记值来描述从中获取它们的位置。
另一个(我更喜欢)是实际使用<<mixin>>
定型泛型并附加一个注释来说明哪些操作/属性应该混合。这将为实施者提供一个“精益实施普通班级”的指南。
最终,您可以创建<<mixin>>
个子类,其中包含您要在最终类中混合的操作/道具的子集,然后从这些子集中进行推广。
可能有人可以提出更多解决方案。使用最适合您的方法。 UML中没有通用的mixin模式(据我所知)。