行為型模式-命令模式

來源:互聯網
上載者:User
using System;
using System.Text;
using System.Collections.Generic;

namespace 命令模式
{
/*
* 命令模式意圖:見一個請求封裝成一個對象,從而讓你使用不同的請求把用戶端參數化,對請求排隊或者記錄請求日誌,可以提供命令的撤銷和恢複功能
*
* 命令模式優點:1、實作類別間的解調,調用者與接收者角色之間沒有任何依賴關係,調用者實現功能時只需調用Command抽象類別的execute方法就可,而無需瞭解到底是哪個接受者執行
* 2、實現Command介面的具體命令對象ConcreteCommand有時候根據需要可能會儲存一些額外的狀態資訊。
* 3、命令模式結合其他模式會更優秀,如和責任鏈模式,實現命令族的解析任務
*
* 命令模式缺點:1、若有N個命令,則具體command子類則膨脹,此時可以結合模板方法使用
* 2、命令模式增加了方法之間的調用複雜度。
*
* 命令模式使用情境:1、中的來說,只要有可以定義為命令的地方都可以使用。
* 2、需要在不同的時間指定請求、將請求排隊。
* 3、使用命令模式作為"CallBack"在物件導向系統中的替代
* 4、系統需要支援命令的撤消(undo)。命令對象可以把狀態儲存起來,等到用戶端需要撤銷命令所產生的效果時,
* 可以調用undo()方法,把命令所產生的效果撤銷掉。命令對象還可以提供redo()方法,以供用戶端在需要時,
* 再重新實施命令效果。
* 5、如果一個系統要將系統中所有的資料更新到日誌裡,以便在系統崩潰時,可以根據日誌裡讀回所有的資料更新命令,重新調用Execute()方法一條一條執行這些命令,從而恢複系統在崩潰前所做的資料更新。
*/

///<summary>
/// 抽象出命令的執行體或聲明一個介面,用於執行操作
///</summary>
publicabstractclass Command
{
protected Receiver reciever =null;
public Command(Receiver reciever)
{
this.reciever = reciever;

}
publicabstractvoid Execute();
}

///<summary>
/// 具體的命令類,將一個接收者對象綁定到一個動作
///</summary>
publicclass ConcreteCommand : Command
{
public ConcreteCommand(Receiver reciever)
: base(reciever)
{

}
publicoverridevoid Execute()
{
this.reciever.Action();
}
}

///<summary>
/// 知道如何執行一個請求相關的操作的類
///</summary>
publicclass Receiver
{
publicvoid Action()
{
//具體的命令執行方法
}
}

///<summary>
/// 要求命令執行一個請求
///</summary>
publicclass Invoker
{
private Command command=null;
publicvoid SetCommand(Command comd)
{
this.command = comd;
}
///<summary>
/// 執行命令
///</summary>
publicvoid ExecuteCommand()
{
this.command.Execute();
}
}

publicclass AppClient
{
publicstaticvoid Main(string[] args)
{
//建立
Receiver receiver =new Receiver();
Command command =new ConcreteCommand(receiver);
Invoker invoker =new Invoker();

// 設定命令和執行命令

invoker.SetCommand(command);
invoker.ExecuteCommand();

}
}
}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.