Приглашаем на Java Jam — бесплатный митап ЮMoney для бэкенд-разработчиков 🔥
✅ 29 октября, четверг, 19:00 (мск) — приходите на митап в Санкт-Петербурге или смотрите трансляцию.
Спикеры из ЮMoney и Сбера выступят с докладами:
🟣 Один апгрейд — больше сотни сервисов: как мы обновляем Java-стек в компании
Обсудим, как обновить Gradle, Spring Boot и Java в 120+ компонентах, не останавливая разработку. Расскажем, как выстраивали процессы на протяжении этого времени: от порядка действий и массовых патчей до взаимодействия с командами и решения трудностей, с которыми столкнулись во время последнего обновления.
🟣 Как я автоматизировал свой проект — и всё сломал
Разберём, как выстроить автоматизацию в проекте с помощью ИИ и какие шишки можно набить на пути. Поговорим, как работает длинный контекст в моделях и как организовать работу с учётом этих особенностей.
🟣 Откатить нельзя оставить: мониторинг выкладки релиза на основе Sentry
Ошибки случаются. Узнаем, какие из них появляются или возникают чаще после последнего релиза — и достаточно ли этого, чтобы принять решение об откате.
Зарегистрируйтесь, чтобы принять участие. Все подробности — на сайте митапа Java Jam👈
Спикеры из ЮMoney и Сбера выступят с докладами:
Обсудим, как обновить Gradle, Spring Boot и Java в 120+ компонентах, не останавливая разработку. Расскажем, как выстраивали процессы на протяжении этого времени: от порядка действий и массовых патчей до взаимодействия с командами и решения трудностей, с которыми столкнулись во время последнего обновления.
Разберём, как выстроить автоматизацию в проекте с помощью ИИ и какие шишки можно набить на пути. Поговорим, как работает длинный контекст в моделях и как организовать работу с учётом этих особенностей.
Ошибки случаются. Узнаем, какие из них появляются или возникают чаще после последнего релиза — и достаточно ли этого, чтобы принять решение об откате.
Зарегистрируйтесь, чтобы принять участие. Все подробности — на сайте митапа Java Jam
Please open Telegram to view this post
VIEW IN TELEGRAM
В Java Generics не работают с примитивными типами
Обобщения (Generics) в Java работают с ссылочными типами, но не с примитивами.
Дело в том, что Java реализует Generics через type erasure (стирание типов), а
Поэтому Java использует классы-обёртки:
Автоупаковка (autoboxing) позволяет работать с ними почти так же, как с примитивами:
Java автоматически преобразует значения
Главное: Generics работают с объектами, а примитивы в Java объектами не являются.
👉 Java Portal
Обобщения (Generics) в Java работают с ссылочными типами, но не с примитивами.
List<Integer> nums = new ArrayList<>(); // ✅
List<int> nums = new ArrayList<>(); // ❌
Дело в том, что Java реализует Generics через type erasure (стирание типов), а
int, double и boolean — примитивные типы, а не ссылочные.Поэтому Java использует классы-обёртки:
int → Integerdouble → Doubleboolean → BooleanАвтоупаковка (autoboxing) позволяет работать с ними почти так же, как с примитивами:
List<Integer> nums = List.of(1, 2, 3);
Java автоматически преобразует значения
int в объекты Integer.Главное: Generics работают с объектами, а примитивы в Java объектами не являются.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
Java Tip: используйте
✅ Безопаснее работа с
✅ Код понятнее и намерения разработчика очевиднее
✅ Меньше риска получить
👉 Java Portal
Optional, чтобы избежать лишних проверок на nullOptional<String> name = Optional.ofNullable(getName());
name.ifPresent(System.out::println);
Optional позволяет явно обозначить, что значение может отсутствовать, и безопасно обработать этот случай.✅ Безопаснее работа с
null✅ Код понятнее и намерения разработчика очевиднее
✅ Меньше риска получить
NullPointerExceptionPlease open Telegram to view this post
VIEW IN TELEGRAM
Telegram
Java Portal | Программирование
Присоединяйтесь к нашему каналу и погрузитесь в мир для Java-разработчика
Связь: @devmangx
РКН: https://clck.ru/3H4WUg
Связь: @devmangx
РКН: https://clck.ru/3H4WUg
❤1
💡 Spring Boot Tip: генерируйте Swagger-документацию автоматически с помощью springdoc-openapi
Добавьте
✅ Подключите starter-зависимость — библиотека сама просканирует эндпоинты.
✅ Откройте
✅ Экспортируйте спецификацию OpenAPI в JSON или YAML для клиентов и API-шлюзов.
👉 Java Portal
Добавьте
springdoc-openapi в проект, и библиотека автоматически создаст документацию API на основе ваших контроллеров.✅ Подключите starter-зависимость — библиотека сама просканирует эндпоинты.
✅ Откройте
/swagger-ui.html, чтобы получить интерактивный интерфейс для тестирования API.✅ Экспортируйте спецификацию OpenAPI в JSON или YAML для клиентов и API-шлюзов.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5
Java-баг, который легко пропустить: HashSet больше не находит объект
Ты добавляешь собственный объект в
Как такое возможно?
Предположим, что методы
Сначала добавляем объект в коллекцию:
Затем меняем email:
Если после изменения поля изменился и
Главное правило: не изменяй поля, участвующие в
Иначе объект может физически оставаться в коллекции, но стать практически недоступным для поиска.
👉 Java Portal
Ты добавляешь собственный объект в
HashSet, а затем изменяешь одно из его полей. После этого set.contains(object) возвращает false, хотя объект всё ещё находится внутри коллекции.Как такое возможно?
Предположим, что методы
hashCode() и equals() зависят от email пользователя.Сначала добавляем объект в коллекцию:
user.email = "old@example.com";
set.add(user);
Затем меняем email:
user.email = "new@example.com";
Если после изменения поля изменился и
hashCode(), объект останется в той корзине (bucket), куда его поместили при добавлении. Но при поиске HashSet может обратиться уже к другой корзине — и не найти объект.Главное правило: не изменяй поля, участвующие в
equals() и hashCode(), пока объект находится в хеш-коллекции.Иначе объект может физически оставаться в коллекции, но стать практически недоступным для поиска.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👍1🤔1
💡 Java Tip: Создаём компактный LRU-кэш без сторонних библиотек
Для реализации простого LRU-кэша в Java можно использовать встроенный
✅
✅ Переопределите
LRU (Least Recently Used) — алгоритм, который удаляет элемент, к которому дольше всего не обращались.
👉 Java Portal
Для реализации простого LRU-кэша в Java можно использовать встроенный
LinkedHashMap.✅
accessOrder = true — перемещает элемент в конец при каждом обращении через get(), поддерживая порядок использования.✅ Переопределите
removeEldestEntry() — чтобы автоматически удалять самый давно неиспользуемый элемент, когда кэш достигает заданного размера.LRU (Least Recently Used) — алгоритм, который удаляет элемент, к которому дольше всего не обращались.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Перестань так использовать Optional в Java
Вместо того чтобы проверять наличие значения через
Используй
Так код становится короче, чище и понятнее.
Помни:
👉 Java Portal
Вместо того чтобы проверять наличие значения через
isPresent() и извлекать его с помощью get():Optional<User> user = repo.findById(id);
if (user.isPresent()) {
return user.get();
}
Используй
orElseThrow():return repo.findById(id)
.orElseThrow(() -> new NotFoundException(id));
Так код становится короче, чище и понятнее.
Помни:
Optional — это тип возвращаемого значения, а не просто навороченная проверка на null.Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
💡 Spring Boot: пагинация с помощью Pageable и Page<T>
В Spring Boot можно легко реализовать постраничную загрузку данных с помощью
✅ Spring автоматически преобразует параметры
✅
Это позволяет удобно реализовать пагинацию на стороне API и передавать интерфейсу всё необходимое для отображения страниц.
👉 Java Portal
В Spring Boot можно легко реализовать постраничную загрузку данных с помощью
Pageable и Page<T>.✅ Spring автоматически преобразует параметры
?page=0&size=20 в объект Pageable.✅
Page<T> содержит не только список полученных записей (content), но и общее количество записей (total count).Это позволяет удобно реализовать пагинацию на стороне API и передавать интерфейсу всё необходимое для отображения страниц.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
90% Java-разработчиков не заметят ошибку в этом коде.
Сможете найти баг, не запуская программу?
👉 Java Portal
Сможете найти баг, не запуская программу?
Please open Telegram to view this post
VIEW IN TELEGRAM
Java Roadmap: от новичка до профессионального разработчика
Основы Java (Java Fundamentals). Начните с базовых элементов языка:
• Синтаксис и структура программы
• Переменные, типы данных и операторы
• Управляющие конструкции:
• Функции и методы
• Массивы и строки
Объектно-ориентированное программирование (ООП). Java построена на принципах ООП — важно хорошо разобраться в них:
• Классы и объекты
• Инкапсуляция, наследование, полиморфизм и абстракция
• Интерфейсы и абстрактные классы
• Конструкторы и перегрузка методов
• Модификаторы доступа
Java Collections. Научитесь эффективно работать со структурами данных:
• Интерфейсы
•
•
•
• Итераторы и компараторы
Обработка исключений (Exception Handling).Научитесь создавать надёжные и отказоустойчивые приложения:
•
• Checked и unchecked exceptions
• Пользовательские исключения
• Лучшие практики обработки ошибок
Работа с файлами и сериализация (File I/O & Serialization). Освойте хранение и передачу данных:
• Чтение и запись файлов
• Буферизированные потоки
• Сериализация объектов
• NIO (New I/O)
Многопоточность и параллелизм (Multithreading &
Concurrency). Научитесь создавать производительные приложения:
• Потоки и
• Синхронизация и блокировки
•
•
• Потокобезопасные коллекции
Функциональное программирование в Java. Изучите возможности современной Java:
• Лямбда-выражения
• Stream API
• Функциональные интерфейсы
• Класс
• Ссылки на методы
Java-фреймворки. Научитесь быстрее создавать масштабируемые приложения:
• Spring Framework
• Spring Boot
• Spring MVC
• Hibernate / JPA
• Micronaut / Quarkus
Базы данных и хранение данных (Databases & Persistence). Разберитесь, как приложения работают с данными:
• JDBC
• SQL (MySQL, PostgreSQL)
• ORM (Hibernate)
• Транзакции и пулы соединений
Сборка проектов и управление зависимостями (Build Tools). Освойте инструменты для сборки и управления проектами:
• Maven
• Gradle
• Структура проекта
• Управление зависимостями
Тестирование (Testing). Научитесь обеспечивать качество и надёжность кода:
• JUnit
• Mockito
• Интеграционное тестирование
• Разработка через тестирование (TDD)
DevOps и развёртывание (DevOps & Deployment). Подготовьте Java-приложения к запуску в production:
• Docker и контейнеризация
• CI/CD-пайплайны
• Развёртывание в облаке (AWS, Azure)
• Мониторинг и логирование
Проектирование систем на Java (System Design). Научитесь проектировать масштабируемые backend-системы:
• REST API и микросервисы
• Кэширование (Redis)
• Очереди сообщений (Kafka, RabbitMQ)
• Балансировка нагрузки и масштабирование
Практические проекты (Real-World Projects). Закрепите знания на реальных задачах:
• REST API на Spring Boot
• Backend для интернет-магазина
• Система аутентификации с JWT
• Проект на основе микросервисной архитектуры
• Банковская или платёжная система
👉 Java Portal
Основы Java (Java Fundamentals). Начните с базовых элементов языка:
• Синтаксис и структура программы
• Переменные, типы данных и операторы
• Управляющие конструкции:
if/else, циклы, switch• Функции и методы
• Массивы и строки
Объектно-ориентированное программирование (ООП). Java построена на принципах ООП — важно хорошо разобраться в них:
• Классы и объекты
• Инкапсуляция, наследование, полиморфизм и абстракция
• Интерфейсы и абстрактные классы
• Конструкторы и перегрузка методов
• Модификаторы доступа
Java Collections. Научитесь эффективно работать со структурами данных:
• Интерфейсы
List, Set, Map•
ArrayList, LinkedList•
HashMap, TreeMap•
HashSet, TreeSet• Итераторы и компараторы
Обработка исключений (Exception Handling).Научитесь создавать надёжные и отказоустойчивые приложения:
•
try-catch-finally• Checked и unchecked exceptions
• Пользовательские исключения
• Лучшие практики обработки ошибок
Работа с файлами и сериализация (File I/O & Serialization). Освойте хранение и передачу данных:
• Чтение и запись файлов
• Буферизированные потоки
• Сериализация объектов
• NIO (New I/O)
Многопоточность и параллелизм (Multithreading &
Concurrency). Научитесь создавать производительные приложения:
• Потоки и
Runnable• Синхронизация и блокировки
•
Executor и пулы потоков•
CompletableFuture• Потокобезопасные коллекции
Функциональное программирование в Java. Изучите возможности современной Java:
• Лямбда-выражения
• Stream API
• Функциональные интерфейсы
• Класс
Optional• Ссылки на методы
Java-фреймворки. Научитесь быстрее создавать масштабируемые приложения:
• Spring Framework
• Spring Boot
• Spring MVC
• Hibernate / JPA
• Micronaut / Quarkus
Базы данных и хранение данных (Databases & Persistence). Разберитесь, как приложения работают с данными:
• JDBC
• SQL (MySQL, PostgreSQL)
• ORM (Hibernate)
• Транзакции и пулы соединений
Сборка проектов и управление зависимостями (Build Tools). Освойте инструменты для сборки и управления проектами:
• Maven
• Gradle
• Структура проекта
• Управление зависимостями
Тестирование (Testing). Научитесь обеспечивать качество и надёжность кода:
• JUnit
• Mockito
• Интеграционное тестирование
• Разработка через тестирование (TDD)
DevOps и развёртывание (DevOps & Deployment). Подготовьте Java-приложения к запуску в production:
• Docker и контейнеризация
• CI/CD-пайплайны
• Развёртывание в облаке (AWS, Azure)
• Мониторинг и логирование
Проектирование систем на Java (System Design). Научитесь проектировать масштабируемые backend-системы:
• REST API и микросервисы
• Кэширование (Redis)
• Очереди сообщений (Kafka, RabbitMQ)
• Балансировка нагрузки и масштабирование
Практические проекты (Real-World Projects). Закрепите знания на реальных задачах:
• REST API на Spring Boot
• Backend для интернет-магазина
• Система аутентификации с JWT
• Проект на основе микросервисной архитектуры
• Банковская или платёжная система
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
Совет для Java-разработчиков: осторожнее со сложными регулярными выражениями
Будьте внимательны при использовании сложных регулярных выражений для проверки пользовательского ввода.
Некоторые шаблоны могут вызывать катастрофический возврат (Catastrophic Backtracking) — ситуацию, когда движок регулярных выражений перебирает огромное количество вариантов сопоставления.
В результате даже простая проверка данных может превратиться в узкое место по CPU, особенно при обработке вредоносного или неожиданно большого пользовательского ввода.
👉 Java Portal
Будьте внимательны при использовании сложных регулярных выражений для проверки пользовательского ввода.
Некоторые шаблоны могут вызывать катастрофический возврат (Catastrophic Backtracking) — ситуацию, когда движок регулярных выражений перебирает огромное количество вариантов сопоставления.
В результате даже простая проверка данных может превратиться в узкое место по CPU, особенно при обработке вредоносного или неожиданно большого пользовательского ввода.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
18 практических работ по DevOps
Docker, Kubernetes, CI/CD, Terraform, Ansible, Helm, GitOps, мониторинг через Prometheus и Grafana, а также управление секретами и progressive delivery. Курс рассчитан на 16 недель.
В финале у вас будет не просто набор выполненных заданий, а собственный кластер с автоматизированным развёртыванием и мониторингом.
👉 Java Portal
Docker, Kubernetes, CI/CD, Terraform, Ansible, Helm, GitOps, мониторинг через Prometheus и Grafana, а также управление секретами и progressive delivery. Курс рассчитан на 16 недель.
В финале у вас будет не просто набор выполненных заданий, а собственный кластер с автоматизированным развёртыванием и мониторингом.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
Эволюция Java: от Java 8 до Java 27
За последние годы Java заметно изменилась: язык получил функциональные возможности, улучшенную производительность, новые инструменты для многопоточности и более удобный синтаксис.
Ключевые обновления по версиям:
• Java 8 (2014) — лямбда-выражения, Stream API, функциональные интерфейсы и новый API для работы с датой и временем.
• Java 11 (2018, LTS) — стандартный HTTP Client,
• Java 17 (2021, LTS) — sealed-классы, pattern matching для
• Java 21 (2023, LTS) — виртуальные потоки, record patterns, pattern matching для
• Java 24 (2025) — улучшения виртуальных потоков: JEP 491 позволяет синхронизированным виртуальным потокам не блокировать carrier threads.
• Java 25 (2025, LTS) — новая LTS-версия с улучшениями производительности, безопасности и стабильности.
• Java 27 (2026) — очередной этап развития платформы: новые возможности и улучшения производительности, многопоточности и удобства разработки.
Что важно разработчикам? Java давно перестала быть просто языком для корпоративных приложений. Виртуальные потоки упрощают работу с большим количеством параллельных задач, Stream API помогает обрабатывать коллекции, а современные версии языка делают код выразительнее.
Если вы используете Java в работе, стоит следить за новыми версиями — особенно за LTS-релизами, которые получают длительную поддержку.
👉 Java Portal
За последние годы Java заметно изменилась: язык получил функциональные возможности, улучшенную производительность, новые инструменты для многопоточности и более удобный синтаксис.
Ключевые обновления по версиям:
• Java 8 (2014) — лямбда-выражения, Stream API, функциональные интерфейсы и новый API для работы с датой и временем.
• Java 11 (2018, LTS) — стандартный HTTP Client,
var в параметрах лямбда-выражений и запуск однофайловых программ без предварительной компиляции.• Java 17 (2021, LTS) — sealed-классы, pattern matching для
instanceof и усиленная инкапсуляция внутренних API JDK.• Java 21 (2023, LTS) — виртуальные потоки, record patterns, pattern matching для
switch и sequenced collections.• Java 24 (2025) — улучшения виртуальных потоков: JEP 491 позволяет синхронизированным виртуальным потокам не блокировать carrier threads.
• Java 25 (2025, LTS) — новая LTS-версия с улучшениями производительности, безопасности и стабильности.
• Java 27 (2026) — очередной этап развития платформы: новые возможности и улучшения производительности, многопоточности и удобства разработки.
Что важно разработчикам? Java давно перестала быть просто языком для корпоративных приложений. Виртуальные потоки упрощают работу с большим количеством параллельных задач, Stream API помогает обрабатывать коллекции, а современные версии языка делают код выразительнее.
Если вы используете Java в работе, стоит следить за новыми версиями — особенно за LTS-релизами, которые получают длительную поддержку.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
Вы можете использовать
✅ Указывает точный конструктор, который должен вызвать Jackson.
✅
✅ Отлично подходит для неизменяемых (immutable) типов — сеттеры не требуются.
👉 Java Portal
@JsonCreator, чтобы обеспечить предсказуемое преобразование JSON в Java-объекты.✅ Указывает точный конструктор, который должен вызвать Jackson.
✅
@JsonProperty явно связывает каждое поле JSON с соответствующим свойством объекта.✅ Отлично подходит для неизменяемых (immutable) типов — сеттеры не требуются.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
🔴 Завтра открытое собеседование с Java-разработчиком
4 ноября (уже завтра!) в 19:00 мск приходи онлайн и посмотри, как проходит настоящее техническое интервью на Middle Java-разработчика
Как это будет:
Виктор более 5 лет занимается enterprise-разработкой в финтехе, телекоме и e-commerce. Сейчас он ведущий разработчик банковских сервисов и системы лояльности в Wildberries. Ранее строил highload-микросервисы с нуля
Участие бесплатное. Эфир проходит в рамках менторской программы ШОРТКАТ для Java-разработчиков, которые хотят вырасти в грейде и зарплате и прокачать технические навыки
Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_sh_bot
Реклама.
О рекламодателе.
4 ноября (уже завтра!) в 19:00 мск приходи онлайн и посмотри, как проходит настоящее техническое интервью на Middle Java-разработчика
Как это будет:
📂 Виктор Анохин, Java/Kotlin-разработчик Wildberries, ex-Билайн, проведёт собеседование с разработчиком-добровольцем: будет задавать реальные вопросы и давать задачи
📂 Виктор прокомментирует каждый ответ и объяснит, на что обращает внимание интервьюер
📂 В конце можно будет задать Виктору любой вопрос
Виктор более 5 лет занимается enterprise-разработкой в финтехе, телекоме и e-commerce. Сейчас он ведущий разработчик банковских сервисов и системы лояльности в Wildberries. Ранее строил highload-микросервисы с нуля
Участие бесплатное. Эфир проходит в рамках менторской программы ШОРТКАТ для Java-разработчиков, которые хотят вырасти в грейде и зарплате и прокачать технические навыки
Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_sh_bot
Реклама.
О рекламодателе.
❤1
Виртуальные потоки (Java 21) — простое объяснение:
Платформенный поток (Platform Thread) = один поток ОС. Он потребляет много ресурсов. Обычно можно создать тысячи таких потоков.
Виртуальный поток (Virtual Thread) = поток, управляемый JVM. Он гораздо легче, поэтому можно создавать миллионы таких потоков.
Лучше всего подходят для: операций с блокирующим вводом-выводом (I/O), например запросов к БД и HTTP-запросов.
Не решают проблему: ресурсоёмких вычислений (CPU-bound задач).
Главное: простой код и высокая параллельность.
👉 Java Portal
Платформенный поток (Platform Thread) = один поток ОС. Он потребляет много ресурсов. Обычно можно создать тысячи таких потоков.
Виртуальный поток (Virtual Thread) = поток, управляемый JVM. Он гораздо легче, поэтому можно создавать миллионы таких потоков.
Лучше всего подходят для: операций с блокирующим вводом-выводом (I/O), например запросов к БД и HTTP-запросов.
Не решают проблему: ресурсоёмких вычислений (CPU-bound задач).
Главное: простой код и высокая параллельность.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
💡 Виртуальные потоки (Virtual Threads) в Java 21 — лёгкие потоки, управляемые JVM.
✅ Не привязаны к потокам ОС по принципу 1:1, поэтому их можно создавать в огромном количестве.
✅ Создать виртуальный поток можно с помощью
✅ Лучше всего подходят для операций, связанных с ожиданием (I/O). Для ресурсоёмких вычислений по-прежнему лучше использовать пулы потоков.
👉 Java Portal
✅ Не привязаны к потокам ОС по принципу 1:1, поэтому их можно создавать в огромном количестве.
✅ Создать виртуальный поток можно с помощью
Thread.ofVirtual().start(...).✅ Лучше всего подходят для операций, связанных с ожиданием (I/O). Для ресурсоёмких вычислений по-прежнему лучше использовать пулы потоков.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
Паттерны проектирования, которые действительно пригодятся в работе с Java:
- Builder — создание объектов с большим количеством необязательных полей.
- Factory — скрывает логику выбора и создания конкретного класса.
- Strategy — позволяет менять поведение, например использовать разные способы оплаты.
- Singleton — гарантирует наличие одного экземпляра объекта (Spring-бин по умолчанию тоже является Singleton в рамках своего контейнера).
- Observer — работа с событиями и слушателями.
- Adapter — позволяет использовать старый API через новый интерфейс.
- Decorator — добавляет функциональность, не изменяя исходный класс.
- Template Method — задаёт общую последовательность шагов, позволяя менять детали реализации.
Необязательно заучивать все паттерны из книги.
Изучите эти — и вы начнёте замечать их в коде, с которым уже работаете.
👉 Java Portal
- Builder — создание объектов с большим количеством необязательных полей.
- Factory — скрывает логику выбора и создания конкретного класса.
- Strategy — позволяет менять поведение, например использовать разные способы оплаты.
- Singleton — гарантирует наличие одного экземпляра объекта (Spring-бин по умолчанию тоже является Singleton в рамках своего контейнера).
- Observer — работа с событиями и слушателями.
- Adapter — позволяет использовать старый API через новый интерфейс.
- Decorator — добавляет функциональность, не изменяя исходный класс.
- Template Method — задаёт общую последовательность шагов, позволяя менять детали реализации.
Необязательно заучивать все паттерны из книги.
Изучите эти — и вы начнёте замечать их в коде, с которым уже работаете.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3