English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Основной учебник Java

Java Управление потоком

Java Массив

Java Ориентированность на объекты (I)

Java Ориентированность на объекты (II)

Java Ориентированность на объекты (III)

Обработка исключений Java

Java Список (List)

Java Queue (очередь)

Java Map коллекция

Java Set коллекция

Java Вход/Выход (I/O)

Java Reader/Writer

Другие темы Java

Singleton-модель Java

В этом руководстве мы изучим пример паттерна Singleton и как его можно использовать в Java.

Singleton ( Singleton ) - это дизайн-паттерн, а не уникальная функция Java. Он гарантирует создание только одного экземпляра класса.

Дизайн-паттерны, как и наша библиотека кода, включают в себя различные технические решения, которые делятся программистами из всех уголков мира.

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 может иметь только один объект, все клиенты могут получить доступ к базе данных через единственную связь.

Следует отметить, что только в少数 случаях (например, логирование)单体 имеет смысл. Даже подключения к базе данных обычно не должны быть单体ными.

Если вы не уверены, следует ли использовать单体, мы рекомендуем вам избегать полного использования单体.