Рубрики

Частные конструкторы и синглтон-классы в Java

Давайте сначала проанализируем следующий вопрос:

Можем ли мы иметь частных конструкторов?

Как вы можете легко догадаться, как и любой метод, мы можем предоставить спецификатор доступа для конструктора. Если он сделан приватным, то к нему можно получить доступ только внутри класса.

Нужны ли нам такие «частные конструкторы»?

Существуют различные сценарии, в которых мы можем использовать частные конструкторы. Основные из них

  1. Внутренняя цепочка конструктора
  2. Шаблон проектирования класса Singleton

Что такое класс Singleton?

Как следует из названия, класс называется одноэлементным, если он ограничивает число объектов этого класса одним.

Мы не можем иметь более одного объекта для таких классов.

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

Шаблон проектирования классов Singleton:

Конструктор синглтон-класса будет закрытым, поэтому должен быть другой способ получить экземпляр этого класса. Эта проблема решается с помощью экземпляра члена класса и фабричного метода для возврата члена класса.

Ниже приведен пример на Java, иллюстрирующий то же самое:

// Java-программа для демонстрации реализации Singleton
// шаблон с использованием частных конструкторов.

import java.io.*;

  

class MySingleton

{

    static MySingleton instance = null;

    public int x = 10;

    

    // закрытый конструктор не доступен вне класса

    private MySingleton() {  }

   

    // Фабричный метод для предоставления пользователям экземпляров

    static public MySingleton getInstance()

    {

        if (instance == null)        

             instance = new MySingleton();

   

        return instance;

    

}

  
// Класс водителя

class Main

{

   public static void main(String args[])    

   {

       MySingleton a = MySingleton.getInstance();

       MySingleton b = MySingleton.getInstance();

       a.x = a.x + 10;

       System.out.println("Value of a.x = " + a.x);

       System.out.println("Value of b.x = " + b.x);

   }    

}

Выход:

Value of a.x = 20
Value of b.x = 20

Мы изменили значение ax, значение bx также было обновлено, потому что и «a», и «b» относятся к одному и тому же объекту, т. Е. Являются объектами одноэлементного класса.

Эта статья предоставлена Ашутошем Кумар Сингхом . Если вам нравится GeeksforGeeks и вы хотите внести свой вклад, вы также можете написать статью и отправить ее по почте на contrib@geeksforgeeks.org. Смотрите свою статью, появляющуюся на главной странице GeeksforGeeks, и помогите другим вундеркиндам.

Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по обсуждаемой теме

Рекомендуемые посты:

Частные конструкторы и синглтон-классы в Java

0.00 (0%) 0 votes