Встречается на собеседованиях • сегодня

В чем разница между шаблонами ООП Состояние и Стратегия

Оба шаблона позволяют менять поведение объекта, но с разными целями:

Состояние (State)
Меняет поведение объекта в зависимости от его внутреннего состояния. Состояния знают друг о друге и могут переключать контекст.
Пример:

java
interface State {
    void handle(Context context);
}

class ConcreteStateA implements State {
public void handle(Context context) {
context.setState(new ConcreteStateB());
}
}

text

**Стратегия (Strategy)**  
Определяет семейство алгоритмов, инкапсулирует каждый и делает их взаимозаменяемыми. Стратегии не знают друг о друге.  
Пример:  
```java
interface Strategy {
    void execute();
}

class ConcreteStrategyA implements Strategy {
    public void execute() {
        // алгоритм A
    }
}

Ключевое отличие: State управляет переходами между состояниями, а Strategy просто предоставляет разные алгоритмы без управления переключениями.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы