TGViewer
Java Portal | Программирование Java Portal | Программирование @java_iibrary · 11.6K subscribers
Post #1347 3.01K
image_2025-04-27_06-48-52.png415.9 KB
Простое объяснение паттерна Singleton

Ситуация: Вы создаете менеджер подключения к базе данных

Вам нужно подключить ваше приложение к базе данных.

Просто. Вы пишете:

DatabaseConnection conn = new DatabaseConnection();


И всё круто.

Но потом разные части приложения начинают плодить свои собственные соединения. Это дорого (память, сеть) и приводит к багам вроде гонок данных и грязных чтений.

Теперь вы застряли в дебаггинге странных ошибок, причина которых в том, что у вас несколько экземпляров объекта, который должен был быть только один

Проблемы:

⏩Много экземпляров вместо одного общего.
⏩Трата ресурсов.
⏩Нестабильное поведение.
⏩Отладка превращается в ад.

Как Singleton спасает ситуацию

⏩Создаём экземпляр один раз
⏩Переиспользуем везде
⏩Контролируем доступ через одну глобальную точку

class DatabaseConnection {
private static DatabaseConnection instance;

private DatabaseConnection() {
System.out.println("Connecting to database...");
}

public static synchronized DatabaseConnection getInstance() {
if (instance == null) {
instance = new DatabaseConnection();
}
return instance;
}

public void query(String sql) {
System.out.println("Running query: " + sql);
}
}


Когда использовать:

— Когда нужен только один объект (БД, логгер, менеджер потоков)
— Когда нужен глобальный доступ
— Когда важно беречь ресурсы

Java Portal
  • 👍 10
  • ❤ 4
More from @java_iibrary
  1. Oct 3, 2026💡 Предпочитайте делегирование наследованию: отношение «является» тесно связывает ваш клас…
  2. Oct 2, 2026🚀 Spring Boot 4: переименовано свойство преобразования исключений ✅ Было: spring.dao.exce…
  3. Oct 2, 2026Процесс ≠ Поток ≠ Виртуальный поток. Эти понятия часто путают, хотя они решают разные зада…
  4. Oct 1, 2026Когда Java-стектрейс оказался длиннее контекста ИИ 👀 👉 Java Portal
  5. Oct 1, 2026Spring Boot 4: приближение срока истечения SSL-сертификатов больше не меняет статус health…
  6. Sep 30, 2026Почему один и тот же Java-файл .class запускается на Windows, Linux и macOS без перекомпил…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →