Что описывают поведенческие паттерны?
- Какие поведенческие паттерны вы знаете?
- Что такое Strategy и Observer?
Поведенческие паттерны описывают, как объекты распределяют обязанности и взаимодействуют.
- Strategy — взаимозаменяемый алгоритм; Observer — уведомление подписчиков; Chain of Responsibility — цепочка обработчиков
- Ещё: Command, Template Method, State, Iterator, Visitor
А ещё В современной Java многие из них — функциональный интерфейс и лямбда
Подробно
Примеры, которые чаще всего обсуждают:
- Strategy — алгоритм передаётся снаружи и может меняться:
Comparatorдля сортировки, способ расчёта скидки. С лямбдами стратегия — одна строка вместо иерархии классов; - Observer — объект уведомляет подписчиков об изменениях: слушатели событий,
ApplicationEventPublisherв Spring, реактивные потоки; - Chain of Responsibility — запрос проходит по цепочке обработчиков, каждый решает, обработать или передать дальше: фильтры сервлетов, цепочка фильтров Spring Security;
- Command — запрос упакован в объект: очереди задач, отмена действий,
Runnable; - Template Method — каркас алгоритма в базовом классе, шаги переопределяют наследники;
- State — поведение зависит от состояния, каждое состояние — отдельный класс;
- Iterator — обход коллекции без раскрытия устройства.
Современный контекст: часть паттернов в Java заметно упростилась — Strategy, Command, Observer часто выражаются функциональным интерфейсом и лямбдой.
Пример
interface DiscountPolicy { BigDecimal apply(BigDecimal price); } // Strategy
DiscountPolicy none = p -> p;
DiscountPolicy blackFriday = p -> p.multiply(new BigDecimal("0.7"));
BigDecimal total = blackFriday.apply(cartTotal);Что хотят услышать
- Назначение группы.
- Несколько паттернов с примерами из практики.
- Связь с лямбдами в современной Java — плюс.
Частые ошибки
- Реализовывать классическую иерархию там, где достаточно лямбды.
- Считать знание названий важнее понимания решаемой задачи.
Проверьте себя
Один верный вариант. Подумайте, потом откройте ответ.
Показать варианты и ответ
- ✗Как объекты создаются, инициализируются и связываются друг с другом
- ✓Как объекты распределяют обязанности и взаимодействуют
- ✗Как объекты размещаются в памяти
- ✗Как классы наследуют друг друга
Что спросят дальше
- Какой паттерн представляет интерфейс сравнения объектов?
- Как лямбды упростили часть этих паттернов?
Разбор темы
- Поведенческие паттерны
Strategy, Template Method, Observer, Command, Chain of Responsibility, State, Iterator и Visitor — с примерами из JDK, Spring и заменой паттернов лямбдами и sealed-типами.
Связанные вопросы
- Зачем нужен паттерн Visitor, какова его цена и чем его можно заменить в современной Java? Senior
- State и Strategy структурно почти одинаковы. Что их различает? Middle
- Какой паттерн реализуют цепочка сервлетных фильтров и фильтр-цепочка Spring Security? Middle
- Что верно про реализацию паттерна Observer в современной Java? Middle
Разбор собеседования с sotto
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.