2013-03-20 58 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