public class CalculosHacienda{
private CalculosHacienda(){
throw new AssertionError(); // no es necesario pero así reforzamos que no se puede crear el objeto
}
}
En el post anterior vimos cómo usar Factorias y las ventajas que estas pueden aportar sobre los constructores mientras que en el segundo post veíamos cómo usar el patrón Builder a la hora de construir objetos
En este post (corto) vamos a ver las ventajas que tiene y cuándo aplicar un constructor privado.
Muchas veces nos encontramos con la típica clase Util
que lo único que contiene son un buen puñado de funciones
y campos privados, "atentando" contra todo diseño orientado a objetos. Sin entrar en tantas exquisitices estas
clases sí son útiles cuando consiguen agrupar un número de funciones comunes (el caso más común podría ser la
clase java.util.Math
)
La característica principal de estas clases es el que no tienen por objetivo ser instanciable. No tienen sentido como objetos tal cual y lo que pretendemos es usar los métodos static directamente. Sin embargo, si una clase no tiene un constructor Java crea uno por defecto sin parámetro y público con lo que cualquiera que vaya a usar esta clase puede estar tentado a instanciar uno objeto de esta clase.
En muchos casos, para evitar esto, se define la clase como abstract para evitar su instanciación pero el problema es que se podría crear una clase que la heredera y esta ofrecer el constructor.
Por eso, cuando lo que queremos es tener una clase Util
es aconsejable añadirle un constructor sin parámetros
con visibiilidad private
public class CalculosHacienda{
private CalculosHacienda(){
throw new AssertionError(); // no es necesario pero así reforzamos que no se puede crear el objeto
}
}
Como bola extra, el crear el método privado hace que la clase no pueda ser extendidas por otras pues el constructor que estas implementaran NO podría llamar al de la clase padre al ser private
2019 - 2024 | Mixed with Bootstrap | Baked with JBake v2.6.7 | Terminos Terminos y Privacidad