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

Можно ли в конструкторе размещать бизнес-логику

Размещение бизнес-логики в конструкторе возможно, но считается антипаттерном. Конструктор должен отвечать только за инициализацию объекта, а сложная логика может привести к:

  • Проблемам с тестированием (например, если логика зависит от внешних сервисов)
  • Нарушению принципа единой ответственности
  • Трудностям при наследовании

Лучше выносить логику в отдельные методы или фабричные классы.

Пример плохого подхода:

java
public class Order {
    public Order(User user) {
        if (user.isBanned()) { // бизнес-логика
            throw new IllegalStateException("User banned");
        }
        // инициализация
    }
}

Лучший вариант:

java
public class OrderValidator {
    public void validate(User user) {
        if (user.isBanned()) {
            throw new IllegalStateException("User banned");
        }
    }
}
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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