Паттерн проектирования Singleton в Java | Практический пример: управление ликвидностью в банковск...
Klass Tech Academy
0:00 / 0:00
Паттерн проектирования Singleton в Java | Практический пример: управление ликвидностью в банковск...
29 просмотров · 6 дн. назад
Klass Tech Academy
68 подписчиков
29 просмотров · 6 дн. назад
🚀 Что если всему вашему Java-приложению потребуется использовать один общий экземпляр класса?
В этом видео мы продолжаем разработку нашего приложения для управления банковской ликвидностью и изучаем шаблон проектирования Singleton в Java.
Представьте, что нескольким сервисам необходим доступ к общему кэшу ликвидности, содержащему профили клиентов и информацию, связанную с учетными записями. Создание отдельных экземпляров кэша может привести к дублированию данных, несогласованному состоянию и ненужному использованию ресурсов.
💡 Цель: ТОЛЬКО ОДИН ЭКЗЕМПЛЯР!
Мы рассмотрим, как шаблон Singleton ограничивает класс одним экземпляром и обеспечивает общую точку доступа к этому экземпляру.
📚 Что вы узнаете?
✅ Поймите проблему создания нескольких экземпляров общего ресурса.
✅ Изучите шаблон проектирования Singleton и его реальные примеры использования.
✅ Реализуйте Singleton в Java, используя различные подходы.
✅ Изучите проблемы потокобезопасности реализаций Singleton.
✅ Понимание немедленной инициализации, отложенной инициализации и синхронизированного доступа.
✅ Изучение подхода с использованием перечислений типа Singleton в Java.
✅ Понимание необходимости использования ключевого слова volatile в блокировке с двойной проверкой.
🏦 Практический пример управления банковской ликвидностью
Нашему приложению для управления банковской ликвидностью может потребоваться общий кэш ликвидности (LiquidityCache) для хранения профилей клиентов и информации, связанной со счетами.
Вместо того чтобы позволять каждому сервису создавать свой собственный экземпляр кэша, мы рассмотрим, как Singleton может обеспечить общий экземпляр для всего приложения.
Мы также обсудим важное различие: один экземпляр Singleton на загрузчик классов или контекст приложения не обязательно является одним экземпляром для всей распределенной системы. В многоэкземплярной конфигурации Spring Boot каждый экземпляр приложения может иметь свой собственный Singleton.
🎯 Преимущества паттерна Singleton
Контролируемое создание экземпляров: ограничение создания экземпляров с помощью контролируемого механизма.
Совместный доступ: предоставление общего экземпляра нескольким вызывающим сторонам.
Эффективность использования ресурсов: Избегайте ненужных дубликатов экземпляров для подходящих общих объектов.
Централизованное состояние: Поддерживайте общее состояние в памяти там, где это необходимо.
Потокобезопасность: Выбирайте реализацию, которая корректно обрабатывает параллельный доступ.
🔍 Важные рассматриваемые понятия
Немедленная и ленивая инициализация
Потокобезопасные реализации Singleton
Синхронизированные методы
Двойная проверка блокировки и volatile
Singleton на основе перечислений
Ограничения Singleton в распределенных приложениях
Помните, что Singleton не всегда является лучшим выбором. Общее изменяемое состояние может создавать проблемы с параллелизмом и тестированием, поэтому используйте этот шаблон только тогда, когда действительно подходит один общий экземпляр.
🔗 Продолжить обучение
Ранее: Шаблон проектирования «Абстрактная фабрика» в Java — создание семейств связанных объектов.
Далее: Шаблон проектирования «Шаблонный метод» в Java — определение общего рабочего процесса с возможностью настройки конкретных шагов подклассами.
📌 Смотрите весь плейлист: Шаблоны проектирования в Java | Руководство для начинающих | Реальный проект по банковской ликвидности
💬 Вопрос: Какую реализацию Singleton вы предпочитаете в Java — перечисление, синхронизированный getInstance() или двойную проверку блокировки? Поделитесь своим ответом в комментариях!
👍 Ставьте лайки, делитесь и подписывайтесь, чтобы получать больше практических уроков по Java и Spring Boot.
#Java #SingletonPattern #DesignPatterns #JavaTutorial #CoreJava #Multithreading #ThreadSafety #JavaInterview