Встречается на собеседованиях • сегодня
Можно ли в конструкторе размещать бизнес-логику
Размещение бизнес-логики в конструкторе возможно, но считается антипаттерном. Конструктор должен отвечать только за инициализацию объекта, а сложная логика может привести к:
- Проблемам с тестированием (например, если логика зависит от внешних сервисов)
- Нарушению принципа единой ответственности
- Трудностям при наследовании
Лучше выносить логику в отдельные методы или фабричные классы.
Пример плохого подхода:
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");
}
}
}
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы