jak*_*s42 4 java uml class-diagram interface associations
因为任何实现接口的类都与所述接口具有相同的类型,所以与接口的任何关系也适用于实现它的任何类吗?
例如,假设我们有一个名为 Product 的接口,它有一个方法签名,它返回类 Colour 的一个实例。然后我们有 2 个实现这个接口的类,称为 Shelf 和 Desk。这两个类包含类 Colour 的一个属性。

或者

是否只需要在 Product 和 Color 之间显示关系,还是 Product、Shelf 和 Desk 都需要显示它们与类 Colour 的关系?
一个接口定义了一个契约,说明实现类必须提供的特性和它们必须满足的约束。如果接口与类 T 有关联,则其所有实现的行为都必须完全像它们也与类 T 有关联一样。
以下是 UML 规范告诉我们的:
接口拥有的属性(包括关联端)意味着实现的 BehavioredClassifier 应该维护与属性的类型和多样性相对应的信息,并促进该信息的检索和修改。在接口上声明的属性并不一定意味着在实现 BehavioredClassifier 上会有这样的属性(例如,它可以通过等效的 get 和 set 操作来实现)。
所以你的问题的答案是模棱两可的:
对于其中一个实现,您还可能有一种不同的情况,即关联派生自其他关联,而不是显式维护。
在您的叙述中,您证明需要关联是因为方法返回 T 类型。但具有参数或返回类型不足以要求关联,如this other SO answer 中所述。关联需要语义关系。
因此,您的界面更可能依赖于Color.
在这两个图中,您应该使用一个普通的空白箭头(末端的白色三角形)而不是一个开放的箭头末端来显示实现依赖关系。
在较早的 UML 版本 1.xx 中,接口具有等同于抽象类的语义,并且不允许拥有自己的属性。虽然现在事情更轻松了,但我建议坚持使用这种方法,因为: