我第一次使用命令模式.我有点不确定我应该如何处理依赖项.
在下面的代码中,我们调度一个CreateProductCommand然后排队等待稍后执行的代码.该命令封装了执行所需的所有信息.
在这种情况下,我们可能需要访问某种类型的数据存储来创建产品.我的问题是,如何将此依赖项注入命令以便它可以执行?
public interface ICommand {
void Execute();
}
public class CreateProductCommand : ICommand {
private string productName;
public CreateProductCommand(string productName) {
this.ProductName = productName;
}
public void Execute() {
// save product
}
}
public class Dispatcher {
public void Dispatch<TCommand>(TCommand command) where TCommand : ICommand {
// save command to queue
}
}
public class CommandInvoker {
public void Run() {
// get queue
while (true) {
var command = queue.Dequeue<ICommand>();
command.Execute();
Thread.Sleep(10000);
}
} …Run Code Online (Sandbox Code Playgroud)