Внедрение зависимостей при использовании шаблона команд

Я впервые использую шаблон команды. Я немного не уверен, как мне следует обрабатывать зависимости.

В приведенном ниже коде мы отправляем 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);
        }
    }
}

public class Client {
    public void CreateProduct(string productName) {
        var command = new CreateProductCommand(productName);
        var dispatcher = new Dispatcher();
        dispatcher.Dispatch(command);
    }
}

Большое спасибо
Бен

13
задан Ben Foster 7 July 2011 в 22:39
поделиться