2013-03-20 45 views
0

Here在俄语维基百科链接中有一个命令设计模式的C++实现的例子。当我从与UML类图我看到比较落实的理解:命令设计模式执行有一些错误?

  1. 类文件是图
  2. 类命令在祈求图中是命令
  3. 类的InsertCommand是的ConcreteCommand在图
  4. 类接收器是图

此外,在接收机中,我们可以从图中看到的,调用程序聚集命令。但在我们的案例中,文档不汇总Command。这是一个错误吗?或者它是命令模式的变体?一般来说,如何严格遵循UML图来设计具体模式?

+2

你不必严格要求。模式描述通常重复出现的设计,而不是规定设计。 – 2013-03-20 09:05:19

+0

如果文档不知道(如何调用)命令,文档如何调用它们的执行? (......也许其他类是真正的调用者) – Beachwalker 2013-03-20 09:05:20

+0

我不明白例如类Document是调用者是否正确? – Narek 2013-03-20 09:11:53

回答

1

Namings用于C++例子是不是那么好,我理解他们如下:

  • DocumentReceiver,在提供方面应用上
  • Receiver类充当Invoker命令的对象UML图。
  • main方法是Client

你可以看看Java的例子,它更干净。

+0

当我想到这个图时,我得出了和你一样的结论。但是当我彻底思考时,我明白如果'Receiver'类是Invoker,那么它在'main()'中做什么,哪个是Client?看图。客户应该使用Receiver。 – Narek 2013-03-20 09:20:09

+0

客户端使用Invoker,而不是来自俄语Wiki中的UML,但是从模式定义:“客户端包含决定在哪些点执行哪些命令。执行命令,它传递命令对象到调用者对象......“_ – udalmik 2013-03-20 10:14:23

+0

所以UML图是错误的? – Narek 2013-03-20 10:23:34