Sobes.tech
Back to questions
Junior — Middle
71

Можешь привести пример, когда применяется паттерн Strategy для реализации поведения объектов?

Answer from AI

sobes.tech AI

Паттерн Strategy позволяет менять поведение объекта во время выполнения, инкапсулируя алгоритмы в отдельные классы и делегируя им выполнение.

Пример: допустим, у нас есть игра, где персонаж может двигаться разными способами — ходить, бегать, летать. Вместо множества условных операторов, мы создаём интерфейс IMoveStrategy и разные реализации:

interface IMoveStrategy {
    void Move();
}

class WalkStrategy : IMoveStrategy {
    public void Move() {
        Console.WriteLine("Персонаж идёт пешком");
    }
}

class FlyStrategy : IMoveStrategy {
    public void Move() {
        Console.WriteLine("Персонаж летит");
    }
}

class Character {
    private IMoveStrategy moveStrategy;

    public Character(IMoveStrategy strategy) {
        moveStrategy = strategy;
    }

    public void SetMoveStrategy(IMoveStrategy strategy) {
        moveStrategy = strategy;
    }

    public void Move() {
        moveStrategy.Move();
    }
}

// Использование
var character = new Character(new WalkStrategy());
character.Move(); // Персонаж идёт пешком
character.SetMoveStrategy(new FlyStrategy());
character.Move(); // Персонаж летит

Такой подход упрощает расширение и изменение поведения без изменения кода класса персонажа.