Constructores privados y clases Singleton en Java

Analicemos primero la siguiente pregunta:

¿Podemos tener constructores privados?

Como puede adivinar fácilmente, como cualquier método, podemos proporcionar un especificador de acceso al constructor. Si se hace privado, solo se puede acceder a él dentro de la clase.

¿Necesitamos tales ‘constructores privados’?

Hay varios escenarios en los que podemos usar constructores privados. Los principales son

  1. Enstringmiento de constructores internos
  2. Patrón de diseño de clase Singleton

¿Qué es una clase Singleton?

Como su nombre lo indica, se dice que una clase es única si limita el número de objetos de esa clase a uno.

No podemos tener más de un solo objeto para tales clases.

Las clases Singleton se emplean ampliamente en conceptos como Redes y Conectividad de bases de datos.

Patrón de diseño de clases Singleton:

El constructor de la clase singleton sería privado, por lo que debe haber otra forma de obtener la instancia de esa clase. Este problema se resuelve utilizando una instancia de miembro de clase y un método de fábrica para devolver el miembro de clase.

A continuación se muestra un ejemplo en Java que ilustra lo mismo:

// Java program to demonstrate implementation of Singleton 
// pattern using private constructors.
import java.io.*;
  
class MySingleton
{
    static MySingleton instance = null;
    public int x = 10;
    
    // private constructor can't be accessed outside the class
    private MySingleton() {  }
   
    // Factory method to provide the users with instances
    static public MySingleton getInstance()
    {
        if (instance == null)        
             instance = new MySingleton();
   
        return instance;
    } 
}
  
// Driver Class
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);
   }    
}

Producción:

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

Cambiamos el valor de ax, el valor de bx también se actualizó porque tanto ‘a’ como ‘b’ se refieren al mismo objeto, es decir, son objetos de una clase singleton.

Este artículo es una contribución de Ashutosh Kumar Singh . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo y enviarlo por correo electrónico a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.

Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *