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

Какой паттерн использовал бы для изменения поведения объекта в зависимости от времени суток

Стратегия (Strategy) — идеальный выбор. Он позволяет инкапсулировать алгоритмы в отдельные классы и динамически менять их во время выполнения.

Пример:

java
interface TimeStrategy {
    void execute();
}

class MorningStrategy implements TimeStrategy {
    public void execute() {
        System.out.println("Good morning!");
    }
}

class EveningStrategy implements TimeStrategy {
public void execute() {
System.out.println("Good evening!");
}
}

class Context {
private TimeStrategy strategy;

text
public void setStrategy(TimeStrategy strategy) {
    this.strategy = strategy;
}

public void greet() {
    strategy.execute();
}

}

// Использование:
Context context = new Context();
if (isMorning()) {
context.setStrategy(new MorningStrategy());
} else {
context.setStrategy(new EveningStrategy());
}
context.greet();

text
Плюсы:  
- Гибкость (легко добавить новые стратегии)  
- Отсутствие условных операторов в основном коде  
- Соответствует Open/Closed Principle
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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