Вопрос с собеседования · Java

Какой паттерн реализуют SLF4J и JdbcTemplate по отношению к тому, что они скрывают?

MiddleПаттерны проектирования
Коротко

Facade — простой вход в сложную подсистему. SLF4J — Simple Logging Facade for Java. JdbcTemplate скрывает ритуал JDBC: соединение, statement, обработка SQLException, закрытие ресурсов.

  • Отличие от адаптера: фасад не подгоняет интерфейс, а скрывает группу классов
  • SLF4J одновременно отвязывает код от конкретной реализации логирования
  • Фасад не запрещает работать с подсистемой напрямую

А ещё Риск — «божественный» фасад, через который идёт всё

Подробно

SLF4J буквально расшифровывается как Simple Logging Facade for Java. JdbcTemplate прячет ритуал JDBC: открыть соединение, подготовить statement, обработать SQLException, закрыть ресурсы. Отличие от адаптера: фасад не подгоняет один интерфейс под другой, а скрывает целую группу классов за упрощённым входом.

Что хотят услышать

  • Название и назначение.
  • Отличие от адаптера.

Частые ошибки

  • Путать фасад с адаптером: у адаптера есть конкретный целевой интерфейс, под который он подгоняет.
  • Считать, что фасад запрещает доступ к подсистеме напрямую — он его лишь упрощает.

Проверьте себя

Один верный вариант. Подумайте, потом откройте ответ.

Показать варианты и ответ
  • ✗Composite — единая работа с деревом и отдельным листом
  • ✗Adapter — подгонка одного интерфейса под другой, ожидаемый клиентом
  • ✓Facade — простой интерфейс к сложной подсистеме
  • ✗Prototype — создание новых объектов копированием образца

Что спросят дальше

  • Чем SLF4J ближе к Bridge, чем к простому фасаду?
  • Какой паттерн стоит за RowMapper в JdbcTemplate?

Разбор темы

Связанные вопросы

Партнёр платформы

Разбор собеседования с sotto

После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.

Разбор собеседования