Tag: 命令模式

在C#中使用generics约束返回Task 的异步方法

我在我正在研究的项目中实现了一个命令模式。 这几乎是当前的结构: public class Response { public bool Success { get; private set; } public static Response CreateErrorResponse() { return new Response { Success = false }; } } public interface ICommand where T : Response { Task ExecuteAsync(); } public abstract CommandBase : ICommand where T: Response { protected abstract Uri BuildUrl(); protected abstract […]

在C#中如何正确实现命令设计模式?

我正在研究设计模式,我目前正在研究命令模式。 这是我目前的代码: // this is the receiver class Calculator : IReceiver { int x; int y; CommandOptions command; public Calculator(int x, int y) { this.x = x; this.y = y; } public void SetAction(CommandOptions command) { this.command = command; } public int GetResult() { int result = 0; switch(this.command) { case CommandOptions.ADD: result = this.x […]

使用命令和工厂设计模式执行排队作业

我有一个在数据库中排队的作业列表,我需要从数据库中读取并使用线程并行执行它们,我有一个命令类列表来执行每个实现公共接口(命令模式)的作业。 但是当我从数据库中检索挂起的作业时,我需要为每个作业实例化正确的命令对象(在工厂类中) ICommand command; switch (jobCode) { case “A”: command = new CommandA(); break; case “B”: command = new CommandB(); break; case “C”: command = new CommandC(); break; } command.Execute(); 有没有更好的方法来创建正确的命令对象而不使用上面的大开关语句? 或者是否有其他模式来执行排队的作业? 解决方案:这样解决(基于选定的答案)。 这将执行命令对象的延迟实例化。 public class CommandFactory { private readonly IDictionary<string, Func> _commands; public CommandFactory() { _commands = new Dictionary<string, Func> { {“A”, () => […]