Junior — Middle
94
¿Puedes dar un ejemplo de cuándo se aplica el patrón Strategy para implementar el comportamiento de objetos?
Respuesta de la IA
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(); // Персонаж летит
Такой подход упрощает расширение и изменение поведения без изменения кода класса персонажа.