gpt4 book ai didi

c# - UML帮助C#设计原则

转载 作者:行者123 更新时间:2023-11-30 22:38:11 25 4
gpt4 key购买 nike

我在理解下面的 UML 时遇到问题:

UML Image

具体来说,PersistentSetThirdPartyPersistentSet是什么关系?PersistentObjectThirdPartyPersistentSet 有什么关系?

请注意,UML 来自 Agile Principles, Patterns, and Practices in C#作者:Martin C. Robert,Martin Micah,2006 年。第 10 章

提前致谢!

最佳答案

Specifically, what is the relationship between PersistentSet and ThirdPartyPersistentSet?

实心钻石<|>----->是Composition (“有一个”)当“整体”存在时,“部分”被破坏。在下图中,如果你摧毁了一辆汽车,你就摧毁了化油器。

空钻石 < >-----> 是 Aggregation (“有一个”)当“整体”存在时,“部分”可能不会被破坏。在下图中,如果你摧毁了一个池塘,你不一定会摧毁鸭子(如果它们聪明的话,它们会搬到另一个池塘)。

Composition
(来源:wikimedia.org)

What is the relationship between PersistentObject and ThirdPartyPersistentSet?

这是一种依赖关系。看我的回答here了解更多信息。

So when does a dependency relationship change to an association relationship when using parameter passing?

如果你把参数存储在本地,那么它就从依赖关系变成了关联关系。如果您只在本地使用该参数,那么它仍然是一个依赖项。

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.
}
}

关于c# - UML帮助C#设计原则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6208308/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com