使用接口时的UML聚合
时间:2020-03-06 14:22:00 来源:igfitidea点击:
如何在UML中表示两个类之间的聚合关系,以使每个类都具有到另一个类的接口的链接,而不是到实现类的链接?
例如。我有一个实现iFoo的类Foo和一个实现iBar的Bar。 Foo应该具有iBar类型的成员变量,而Bar应该具有iFoo类型的成员变量。
如果我在两个实现类之间创建一个聚合,则该成员将是实现类的类型,而不是超类。接口之间的聚合在UML中是无效的(并且没有太大意义)。
解决方案
我们可以没有Foo(实现)聚合iBar(界面)吗?在我看来,这是描述这种关系的正确方法。
所以像这样:
----------------- ----------------- | <<interface>> | | <<interface>> | | iFoo |<> <>| iBar | ----------------- \/ ----------------- ^ /\ ^ | / \ | -----------------/ \----------------- | Foo | | Bar | ----------------- -----------------
接口不是可实例化的,因此Bar不能具有iFoo类型的属性,而Foo不能具有iBar类型的属性。
我们说我们不希望Bar和Foo之间建立关联。因此,我们可以创建一个新的类(FooEx),并让该类实现iFoo。然后,Bar可以具有与FooEx而不是Foo的关联。