Код IT
← Каталог

Паттерн "Команда" в C# — объекты действий, а не методы — Классический вариант

Фрагмент из «Паттерн "Команда" в C# — объекты действий, а не методы»: Классический вариант.

csharp projectencyclopedia7-06-proektirovanie-i-arhitektura-design-patterns-120 embed URL статья в энциклопедии
C# main.cs
public interface ICommand
{
    void Execute();
    void Undo();
}

public class SaveDocumentCommand : ICommand
{
    private readonly DocumentService _receiver;
    private readonly string _path;

    public SaveDocumentCommand(DocumentService receiver, string path)
    {
        _receiver = receiver;
        _path = path;
    }

    public void Execute() => _receiver.Save(_path);
    public void Undo() => _receiver.RestorePreviousVersion(_path);
}
public interface ICommand
{
    void Execute();
    void Undo();
}

public class SaveDocumentCommand : ICommand
{
    private readonly DocumentService _receiver;
    private readonly string _path;

    public SaveDocumentCommand(DocumentService receiver, string path)
    {
        _receiver = receiver;
        _path = path;
    }

    public void Execute() => _receiver.Save(_path);
    public void Undo() => _receiver.RestorePreviousVersion(_path);
}