Command模式把发出命令的一方和执行命令的一方分离开来,使得请求的一方不必知道接收的一方的接口,更不必知道请求是怎么被接收,以及操作是否被执行、何时被执行,以及是怎么被执行的。
它包含下面几个角色:
命令模式的一个优点是可以方便的实现undo和redo功能。
下面的例子说明了这点:
先定义Command接口:
abstract class Command
{
public abstract void Execute();
public abstract void UnExecute(); // 支持undo
}
下面定义命令的接收者(Receiver):
}
}
接下来是Invoker,用它来保存执行过的命令,实现undo和redo功能:
}
}
最后是调用的代码:
{
// Create user and let her compute
User user = new User();
user.Compute(
'+', 100);user.Compute('-', 50);
user.Compute('*', 10);
user.Compute('/', 2);
// Undo 4 commands
user.Undo(4);
// Redo 3 commands
user.Redo(3);
}
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:设计模式-Command(命令模式) - Python技术站