CSharp设计模式读书笔记(15):命令模式(学习难度:★★★☆☆,使用频率:★★★★☆)

命令模式(Command Pattern):将一个请求封装为一个对象,从而让我们可用不同的请求对客户进行参数化;对请求排队或者记录请求日志,以及支持可撤销的操作。命令模式是一种对象行为型模式,其别名为动作(Action)模式或事务(Transaction)模式。

模式角色与结构:(可以有多个ConcreteCommand,分别保存多个Receiver的引用)

示例代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace CSharp.DesignPattern.CommandPattern
{
    class Program
    {
        static void Main(string[] args)
        {
            Command command = new ConcreteCommand();
            Invoker invoder = new Invoker(command); // 功能键

            invoder.Call();

            Console.ReadLine();
        }
    }

    // 调用者
    class Invoker
    {
        private Command command;

        // 构造注入
        public Invoker(Command command)
        {
            this.command = command;
        }

        public void Call()
        {
            command.Execute();
        }
    }

    // 抽象命令
    abstract class Command
    {
        public abstract void Execute();
    }

    // 具体命令类
    class ConcreteCommand : Command
    {
        private Receiver receiver; // 维持对请求接收者的引用

        public ConcreteCommand()
        {
            receiver = new Receiver();
        }

        public override void Execute()
        {
            receiver.Action();
        }
    }

    // 接收者类
    class Receiver
    {
        public void Action()
        {
            Console.WriteLine("Receiver Action...");
        }
    }
}
原文地址:https://www.cnblogs.com/thlzhf/p/3993747.html