2008-12-19 121 views

回答

12

你說得對,動作模式==命令模式。在GUI設計中,你會聽到它更頻繁地調用動作模式,形式爲「按下某個按鈕,執行此操作」。在代碼中,按鈕將與某種操作對象連接起來。

0

動作設計模式與Command設計模式相同。 Action是一個關鍵實體,它將自身的信息封裝在它的行爲中,它的do()方法需要做什麼處理,它如何被撤消等等。當應用程序或其任何組件按照Action設計模式進行設計時,應用程序中的Everything活動可以以動作的形式表示,每一件事都可以重做/撤消多次。例如。宏在Excel中,文本編輯器撤銷/重做等

Action類,這是這種設計模式的構建塊可設計如下: -

public interface Action{ 
    public void do(); 
    public void undo(); 
    public void do(int iNoOfTimes); 
} 

public class FileCopyAction implements Action{ 
    private int iActionId; 
    public void do(){} 
    public void undo(){} 
    public void do(int iNoOfItems){} 
} 

希望它能幫助。

1

我現在在MSDN上讀「The Action/Executor Pattern」,我不同意Command和Action/Executor模式相同的前提。

Command Pattern的描述在SourceMaking.com:

  • 封裝的請求爲對象,從而讓你參數客戶不同的要求,隊列或日誌請求,並支持可撤銷的操作。
  • 推進「的方法的調用的對象上的」完整對象狀態
  • 一種面向對象的回調

從MSDN文章有關動作/執行人圖案:

Action/Executor模式確定了將用例映射到代碼的策略,從而提高了可視性和敏捷性。此外,它還解決了污染實體和跳過適當使用交易的問題。

的差異似乎是一個「行動」封裝一個或多個步驟,即執行時成功委派控制,負責瞭解如何堅持這些變化到數據庫,Web服務或文件存儲的另一個對象。該操作與執行/保持的方式分離。

「命令」感覺就像是Action/Executor模式的一半 - 「動作」似乎與「命令」同義。 Action/Executor模式讓事情更進一步,並描述了另一個擔心,他的責任是採取「action」或「command」生成的更改並將其保存在某個位置。