设计模式学习笔记——命令模式(Command)
生活随笔
收集整理的這篇文章主要介紹了
设计模式学习笔记——命令模式(Command)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1.特點:將請求發(fā)送者與具體實現(xiàn)者解耦,可對請求排列、取消、重做,支持事務(wù)。(多請求,單處理)
2.概念:屬于對象的行為模式【GOF95】。命令模式又稱為行動(Action)模式或交易(Transaction)模式。命令模式把一個請求或者操作封裝到一個對象中。命令模式允許系統(tǒng)使用不同的請求把客戶端參數(shù)化,對請求排隊或者記錄請求日志,可以提供命令的撤銷和恢復(fù)功能。
3.類圖:
4、程序?qū)崿F(xiàn):
/// <summary>/// 接收者類,知道如何實施與執(zhí)行一個請求相關(guān)的操作,任何類都可能作為一個接收者。/// </summary>public class Receiver{/// <summary>/// 真正的命令實現(xiàn)/// </summary>public void Action(){Console.WriteLine("Execute request!");}}/// <summary>/// 抽象命令類,用來聲明執(zhí)行操作的接口/// </summary>public interface ICommand{void Execute();}/// <summary>/// 具體命令類,實現(xiàn)具體命令。/// </summary>public class ConcereteCommand : ICommand{// 具體命令類包含有一個接收者,將這個接收者對象綁定于一個動作private Receiver receiver;public ConcereteCommand(Receiver receiver){this.receiver = receiver;}/// <summary>/// 說這個實現(xiàn)是“虛”的,因為它是通過調(diào)用接收者相應(yīng)的操作來實現(xiàn)Execute的/// </summary>public void Execute(){receiver.Action();}}/// <summary>/// 調(diào)度類,要求該命令執(zhí)行這個請求/// </summary>public class Invoker{private ICommand command;/// <summary>/// 設(shè)置命令/// </summary>/// <param name="command"></param>public void SetCommand(ICommand command){this.command = command;}/// <summary>/// 執(zhí)行命令/// </summary>public void ExecuteCommand(){command.Execute();}}class Program{static void Main(string[] args){Receiver receiver = new Receiver();ICommand command = new ConcereteCommand(receiver);Invoker invoker = new Invoker();invoker.SetCommand(command);invoker.ExecuteCommand();Console.Read();}}
轉(zhuǎn)載于:https://www.cnblogs.com/ice-baili/p/4710400.html
總結(jié)
以上是生活随笔為你收集整理的设计模式学习笔记——命令模式(Command)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 欧芭烫染受损修护洗发水效果怎么样?
- 下一篇: 也谈不甘