我在理解下面的 UML 时遇到问题:
PersistentSet
具体来说,和之间的关系是什么ThirdPartyPersistentSet
?PersistentObject
和之间有什么关系ThirdPartyPersistentSet
?
请注意,UML 来自 Martin C. Robert,Martin Micah 的敏捷原则、模式和 C# 实践,2006 年。第 10 章
提前致谢!
我在理解下面的 UML 时遇到问题:
PersistentSet
具体来说,和之间的关系是什么ThirdPartyPersistentSet
?PersistentObject
和之间有什么关系ThirdPartyPersistentSet
?
请注意,UML 来自 Martin C. Robert,Martin Micah 的敏捷原则、模式和 C# 实践,2006 年。第 10 章
提前致谢!
具体来说,PersistentSet 和 ThirdPartyPersistentSet 是什么关系?
实心菱形 <|>-----> 是Composition
(“有一个”),当“整体”存在时,“部分”被破坏。在下图中,如果你摧毁一辆汽车,你就摧毁了化油器。
空的菱形 < >-----> 是Aggregation
(“有一个”),当“整体”存在时,“部分”可能不会被破坏。在下图中,如果你摧毁了一个池塘,你不一定会摧毁鸭子(如果它们很聪明,它们会搬到另一个池塘)。
(来源:wikimedia.org)
PersistentObject 和 ThirdPartyPersistentSet 是什么关系?
这是一种依赖关系。请在此处查看我的答案以获取更多信息。
那么在使用参数传递时,依赖关系何时会变为关联关系呢?
如果将参数存储在本地,则它会从依赖关系变为关联关系。如果您只在本地使用该参数,那么它仍然是一个依赖项。
C#代码示例:
// Association
public class ThirdPartyPersistentSet
{
private PersistentObject _object;
public ThirdPartyPersistentSet(PersistentObject obj)
{
_object = obj; // Store it to a local variable.
// Now ThirdPartyPersistentSet 'knows' about
// the PersistentObject.
}
}
// Dependency
public class ThirdPartyPersistentSet
{
public ThirdPartyPersistentSet(PersistentObject obj)
{
obj.GetSomething(); // Do something with obj,
// but do not store it to a local variable.
// You only 'use' it and ThirdPartyPersistentSet
// does not 'know' about it.
}
}
PersistentSet 和ThirdPartyPersistentSet 之间的关系是一种Aggregation,即PersistentSet 包含一个或多个ThridPartyPersistenSet 实例。这是一种“弱”关系,这意味着 ThirdPartyPersistentSet 的实例可以存在于 PersistentSet 之外。
PersistentObject 和 ThirdPartyPersistentSet 之间的关系是依赖关系,这意味着基本上 ThirdPartyPersistentSet 需要一个 PersistentObject 来完成它的工作。
因此,要将其转换为代码,您的 PersistentSet 将包含如下内容:
public class PersistentSet
{
public List<ThirdPartyPersistentSet> Items { get; }
...
}
您的 ThirdPartyPersistentSet 看起来像这样:
public class ThirdPartyPersistentSet
{
private PersistentObject _object;
public ThirdPartyPersistentSet(PersistentObject obj)
{
_object = obj;
}
...
}
具体来说,PersistentSet 和 ThirdPartyPersistentSet 是什么关系?
PersistentSet 有许多 ThirdPartyPersistentSets
PersistentObject 和 ThirdPartyPersistentSet 是什么关系?
ThirdPartyPersistentSet 依赖于(使用-a)PersistentObject
uml 类图中的所有行都表示一种或另一种依赖关系,除了对注释的虚线(折角框)。没有箭头的实线表示两 (2) 路(双向)依赖关系。
黑色菱形表示组合、包含(如具有箭头所指类型的字段):
PersistentSet
实体包含ThirdPartyPersistentSet
实体当 PersistenSet 被销毁时,包含的所有 ThirdPartyPersistenSet 对象也将被销毁。
虚线表示依赖项,如进行具有箭头所指类型的参数的函数调用):
ThirdPartyPersistentSet
取决于PersistentObject
具体来说,PersistentSet 和 ThirdPartyPersistentSet 是什么关系?
http://en.wikipedia.org/wiki/Class_diagram#Aggregation
PersistentObject 和 ThirdPartyPersistentSet 是什么关系?