Бесплатный курс по Java: от основ до продвинутого уровня
Шаблон Singleton в Java: обеспечение единственного экземпляра
Singleton – класс, который гарантировано имеет только один экземпляр.
Используется, как некий глобальный ресурс доступ к которому есть в любой точке приложения.
//Создадим класс синглтона. В нем сразу же создается
//и объект этого класса и никогда больше объект этого
//класса не создается и не может быть создан в принципе.
//В этом вся суть синглтона.
class Singleton {
String str = “Singleton String!!!”;
//Тем что конструктор private достигается
//невозможность создания экземпляра этого класса
//где-либо вне определения класса Singleton.
//Как мы помним private элементами класса
//можно пользоваться исключительно в пределах
//определения класса поэтому конструктором вне
//класса воспользоваться нельзя, а значит
//и создать объект этого класса нельзя так как при
//создании объекта всегда вызываеться конструктор
private Singleton() { }
//В пределах определения класса как уже было
//сказано private элементы доступны.
//Поэтому можем создать экземпляр здесь.
private static Singleton singleton = new Singleton();
//Чтобы получить этот единственный экземпляр
//у синглтона должен быть публичный метод,
//который возвращает его.
public static Singleton getInstance() {
return singleton;
}
}
public class SingletonExample {
public static void main(String[] args) {
//Во время работы приложения в любой его точке
//может быть извлечен и использован единственный
//экземпляр синглтона созданный внутри класса
//синглтона.
//Создадим две ссылки с именами singleton
//и singleton1. Обе они ссылаются на один и тот
//же единственный возможный объект синглтона.
Singleton singleton = Singleton.getInstance();
Singleton singleton1 = Singleton.getInstance();
//Чтобы доказать что singleton и singleton1
//ссылаются на один и тот же объект
//давайте изменим str в объекте синглтона через
//ссылку singleton.
singleton.str = “New singleton string!!!!!!!”;
//и выведем эту измененную строку в объекте
//через ссылку singleton1.
System.out.println(singleton1.str);
}
}
Скомпилируем java файл и запустим программу.
Как видим, строка в единственном объекте синглтона успешно была изменена через одну ссылку, а через другую была выведена на консоль. То есть работать можем с единственным объектом синглтона через разные ссылки в приложении.
Singleton vs Статический класс
Часто у многих возникает вопрос – “Зачем нужен синглтон если есть статический класс, который тоже можно использовать как какой-то глобальный ресурс?”
Дело в том, что сиенглтон является экземпляром, когда статический класс нет, поэтому синглтоном можно пользоваться, как нормальным объектом, например, передать как объект куда-то.
Также синглтон в отличие от стат. класса может реализовать или наследовать что-то.
DAO паттерн в Java: изоляция доступа к данным. Узнайте, как отделить бизнес-логику от низкоуровневых операций с базой данных через Data Access Object.
Time to read: 13
Шаблон Front Controller: централизованная обработка запросов
Front Controller в Java: централизованная обработка запросов. Паттерн для маршрутизации HTTP-запросов через единую точку входа в веб-приложениях.
Time to read: 14
Шаблон Template: поведение по умолчанию
Узнайте, как паттерн Template задает скелет алгоритма в Java. Абстрактный класс определяет последовательность шагов, позволяя подклассам переопределять этапы.