Junior — Middle
89
Масъул шудан барои мисол, кай паттерни Strategy барои иҷрои рафтори объектҳо истифода мешавад?
Ҷавоб аз 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(); // Персонаж летит
Такой подход упрощает расширение и изменение поведения без изменения кода класса персонажа.