En este ejemplo, aprenderemos a implementar constructores privados en Java.
Para comprender este ejemplo, debe tener el conocimiento de los siguientes temas de programación de Java:
- Constructores de Java
- Singleton de Java
Ejemplo 1: programa Java para crear un constructor privado
class Test ( // create private constructor private Test () ( System.out.println("This is a private constructor."); ) // create a public static method public static void instanceMethod() ( // create an instance of Test class Test obj = new Test(); ) ) class Main ( public static void main(String() args) ( // call the instanceMethod() Test.instanceMethod(); ) )
Salida
Este es un constructor privado.
En el ejemplo anterior, hemos creado un constructor privado de la Test
clase. Por tanto, no podemos crear un objeto de la Test
clase fuera de la clase.
Es por eso que hemos creado un public static
método llamado instanceMethod()
dentro de la clase que se usa para crear un objeto de la clase Test. Y desde la Main
clase, llamamos al método usando el nombre de la clase.
Ejemplo 2: diseño de Java Singleton utilizando un constructor privado
El patrón de diseño de Java Singleton asegura que solo debe haber una instancia de una clase. Para lograr esto usamos el constructor privado.
class Language ( // create a public static variable of class type private static Language language; // private constructor private Language() ( System.out.println("Inside Private Constructor"); ) // public static method public static Language getInstance() ( // create object if it's not already created if(language == null) ( language = new Language(); ) // returns the singleton object return language; ) public void display() ( System.out.println("Singleton Pattern is achieved"); ) ) class Main ( public static void main(String() args) ( Language db1; // call the getInstance method db1= Language.getInstance(); db1.display(); ) )
Salida
Se logra el patrón Singleton de Inside Private Constructor
En el ejemplo anterior, hemos creado una clase llamada Idiomas. La clase contiene,
- idioma -
private
variable de tipo de clase - Language () -
private
constructor - getInstance () -
public static
método de tipo de clase - display () -
public
método
Dado que el constructor es private
, no podemos crear objetos de Language a partir de la clase externa. Por lo tanto, hemos creado un objeto de la clase dentro del getInstance()
método.
Sin embargo, hemos establecido la condición de tal manera que solo se crea un objeto. Y el método devuelve el objeto.
Note la línea,
db1 = Language.getInstance();
Aquí,
- db1 es una variable de tipo de lenguaje
- Language.getInstance () : llama al método
getInstance()
Dado que getInstance()
devuelve el objeto de la clase Language, a la variable db1 se le asigna el objeto devuelto.
Finalmente, hemos llamado al display()
método usando el objeto.