要设置命令编程代码,首先需要定义一个命令接口,然后创建一个接收器类来执行命令。接下来,定义具体命令类,这些类将实现命令接口并提供执行和撤销操作的方法。以下是一个简单的示例,展示了如何实现这些步骤:
定义命令接口
```csharp
public interface Command {
void Execute();
void Undo();
}
```
定义接收器类
```csharp
public class Receiver {
public void Inspect() {
Console.WriteLine("Receiver is being inspected.");
}
}
```
定义具体命令类
```csharp
public class ChangeNameCommand : Command {
private Receiver _receiver;
private string _oldName;
private string _newName;
public ChangeNameCommand(Receiver receiver, string oldName, string newName) {
_receiver = receiver;
_oldName = oldName;
_newName = newName;
}
public void Execute() {
_receiver.Inspect();
Console.WriteLine($"Name changed from {_oldName} to {_newName}.");
}
public void Undo() {
Console.WriteLine($"Name changed back from {_newName} to {_oldName}.");
}
}
```
使用命令模式
```csharp
public class CommandPatternDemo {
public static void Main() {
Receiver receiver = new Receiver();
Command changeNameCommand = new ChangeNameCommand(receiver, "Old Name", "New Name");
changeNameCommand.Execute();
changeNameCommand.Undo();
}
}
```
在这个示例中,我们定义了一个`Command`接口,它有两个方法:`Execute`和`Undo`。`Receiver`类是我们的接收器,它有一个`Inspect`方法。`ChangeNameCommand`类是一个具体命令,它实现了`Command`接口,并在`Execute`方法中调用接收器的`Inspect`方法,同时更改名称。`Undo`方法则将名称更改回原来的值。
通过这种方式,我们可以将命令的调用封装在对象中,从而使得代码更加模块化和易于维护。