C# 设计模式(行为型模式):命令模式 (Command Pattern)
一、什么是命令模式?
命令模式(Command Pattern)是一种行为型设计模式,它将请求封装成一个对象,从而使你可以用不同的请求、队列或者日志来参数化对象。此模式使得请求的发送者和接受者完全解耦。
在命令模式中,一个命令就是一个独立的对象,包含了执行请求所需的所有信息。这种模式非常适合需要撤销/重做操作或事务管理的场景。
二、模式结构
- Command(抽象命令类):声明执行操作的接口。
- ConcreteCommand(具体命令类):实现命令接口,绑定一个接收者对象,调用接收者的相应操作。
- Invoker(调用者):调用命令对象执行具体请求。
- Receiver(接收者):执行命令请求的具体对象。
- Client(客户端):创建命令对象并设置接收者和调用者。
三、适用场景
- 撤销/重做操作:如文本编辑器的撤销和重做功能。
- 任务队列:将请求放入队列以便稍后执行。
- 事务系统:需要记录日志并支持操作回滚。
四、C# 实现案例
1. 场景描述
模拟一个智能家居系统,支持打开和关闭灯的功能,同时能够支持撤销上一个操作。
2. 实现代码
using System;
using System.Collections.Generic;
namespace CommandPatternExample
{
// 命令接口
public interface ICommand
{
void Execute();
void Undo();
}
// 具体命令:打开灯
public class LightOnCommand : ICommand
{
private Light _light;
public LightOnCommand(Light light)
{
_light = light;
}
public void Exec