【发布时间】:2020-04-01 06:08:24
【问题描述】:
在 OOP 中,当类使用关键字 new 创建实例时,存在依赖关系。关于Wikipedia,UML 符号通过带有虚线的箭头显示依赖关系:
网站https://www.dofactory.com/net/command-design-pattern 显示了命令模式的代码及其UML。这个网站上的代码有一个客户端类(我认为是MainApp),其中包含三倍关键字new,用于为接收者、命令和调用者创建一个实例。
// Client
class MainApp
{
/// <summary>
/// Entry point into console application.
/// </summary>
static void Main()
{
// Create receiver, command, and invoker
Receiver receiver = new Receiver(); // <- no dashed arrow in UML
Command command = new ConcreteCommand(receiver); // <- dashed arrow in UML
Invoker invoker = new Invoker(); // <- no dashed arrow in UML
// [...]
}
}
abstract class Command
{
// [...]
}
class ConcreteCommand : Command
{
public ConcreteCommand(Receiver receiver) : base(receiver)
{
// [...]
}
// [...]
}
class Receiver
{
// [...]
}
class Invoker
{
// [...]
}
你可以在这里找到完整的代码:https://www.dofactory.com/net/command-design-pattern
为什么这个website 上的UML 只显示客户端对具体command 的依赖关系?因为客户端也在接收者和调用者上使用了关键字new。我还期望 UML 中的接收者和调用者的依赖关系箭头。
【问题讨论】:
-
是的,代码属于图表。见这里:dofactory.com/net/command-design-pattern
-
@qwerty_so:我现在从 dofactory.com/net/command-design-pattern 中添加了主要代码 sn-ps
-
您是否因为使用工具创建图表而抱怨?
-
如果是这样,请在此处查看我的答案:stackoverflow.com/questions/60861006/…
-
@qwerty_so:对不起,我说得不准确。问题是,为什么网站dofactory.com/net/command-design-pattern(我在其中复制了 UML)和其他来源显示没有依赖关系的 UML。
标签: c# design-patterns uml