English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
В этом руководстве мы изучим пример паттерна Singleton и как его можно использовать в Java.
Singleton ( Singleton ) - это дизайн-паттерн, а не уникальная функция Java. Он гарантирует создание только одного экземпляра класса.
Дизайн-паттерны, как и наша библиотека кода, включают в себя различные технические решения, которые делятся программистами из всех уголков мира.
Вот как мы используем паттерн Singleton в Java.
Создайте приватный конструктор, который ограничивает создание объектов за пределами класса.
Создайте приватное свойство, которое ссылается на单体 объект.
Создайте public static метод, который позволяет создавать и доступ к объекту, который вы создали. Внутри метода создайте условие, которое ограничивает создание нескольких объектов.
Это пример.
class SingletonExample { //ссылка на приватное поле объекта private static SingletonExample singleObject; private SingletonExample() { //конструктор класса SingletonExample } public static SingletonExample getInstance() { //написать код, который позволяет создавать только один объект //доступ к объекту по мере необходимости } }
В вышеуказанных примерах,
private static SingletonExample singleObject - Ссылка на объект класса.
private SingletonExample() - Приватный конструктор, используемый для ограничения создания объектов за пределами класса.
public static SingletonExample getInstance() - Этот метод возвращает ссылку на уникальный объект класса. Поскольку этот метод статический, его можно вызывать через имя класса.
Использование базы данных можно производить с помощью单体. Они могут быть использованы для создания пулов подключений для доступа к базе данных, а также для повторного использования одного и того же подключения для всех клиентов. Например,
class Database { private static Database dbObject; private Database() { } public static Database getInstance() { //创建对象(如果尚未创建) if(dbObject == null) { dbObject = new Database(); } //返回单例对象 return dbObject; } public void getConnection() { System.out.println("现在已经连接到数据库。"); } } class Main { public static void main(String[] args) { Database db1; //引用Database的唯一对象 db1 = Database.getInstance(); db1.getConnection(); } }
Когда мы запустим программу, вывод будет следующим:
Теперь мы подключены к базе данных.
В примере выше,
Мы создали单体 класс Database.
dbObject - это поле типа класса. Это будет ссылаться на объект класса Database.
Приватный конструктор Database(), предотвращающий создание объектов за пределами класса.
Статический метод типа класса getInstance() возвращает экземпляр класса внешним
В классе Main у нас есть переменная типа класса db1. Мы используем db1 для вызова getInstance(), чтобы получить уникальный объект Database.
Этот метод getConnection() может использоваться только для доступа к объекту Database.
Поскольку Database может иметь только один объект, все клиенты могут получить доступ к базе данных через единственную связь.
Следует отметить, что только в少数 случаях (например, логирование)单体 имеет смысл. Даже подключения к базе данных обычно не должны быть单体ными.
Если вы не уверены, следует ли использовать单体, мы рекомендуем вам избегать полного использования单体.