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(); // Персонаж летит
Такой подход упрощает расширение и изменение поведения без изменения кода класса персонажа.