Enviar respuesta 
 
Calificación:
  • 0 votos - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Use constructores privados para clases que se deban instanciar
demian Sin conexión
Administrator
*******

Mensajes: 1.808
Registro en: Jun 2010
Reputación: 0
Mensaje: #1
Use constructores privados para clases que se deban instanciar
Imagine que en Java (o cualquier otro lenguaje) tiene usted una clase como esta:

Código:
public class BoxReader {

  public static List<Box> exRead(InputStream is) {
    // Do something...
  }
}

Básicamente se trata de una clase estática, que no fue pensada para ser instanciada, sino para ser usada completamente de forma estática, es decir:

Código:
List<Box> boxList = BoxReader.exRead(someInputStreamVar);

Sin embargo, es posible que el programador cliente "sienta la tentación" o se confunda e intente hacer algo como:

Código:
BoxReader brd = new BoxReader();
List<Box> boxList = brd.exRead(someInputStreamVar);

Lo cual si bien en este caso no genera problemas, pueden existir circunstancias en las que si sea un problema. Además, es una buena práctica que los clientes usen las clases de la forma "correcta".

En este caso, se puede añadir un constructor privado, para garantizar que la clase nunca va a ser instanciada (o heredada e instanciada):

Código:
public class BoxReader {

  private BoxReader() {
    // Empty
  }

  public static List<Box> exRead(InputStream is) {
    // Do something...
  }
}

O bien declarar la clase como abstracta (las clases abstractas no pueden ser instanciadas, pero si podría serlo una clase hija):

Código:
public abstract class BoxReader {

  public static List<Box> exRead(InputStream is) {
    // Do something...
  }
}

Por otro lado, si se desea que una clase no sea instanciada directamente, sino sólo si es heredada, esto también se puede lograr con abstract (como se muestra en el código anterior) o usando un constructor protegido:

Código:
public class BoxReader {

  protected BoxReader() {
    // Empty
  }

  public static List<Box> exRead(InputStream is) {
    // Do something...
  }
}

Los punto más importantes es:

1 .- La visibilidad/control de acceso y las otras distintas características del lenguaje de programación que usted use (sea Java o cualquier otro) están ahí para ayudarle, asegúrese de conocer bien su lenguaje de programación.

2.- Siempre haga todo lo posible para que las clases que escriba sean usadas de la forma en que se pensó que serían usadas.

[Imagen: dmi-1.jpg]
06-11-2010 08:42 PM
Visita su sitio web Encuentra todos sus mensajes Cita este mensaje en tu respuesta
Enviar respuesta 


Salto de foro:


Usuario(s) navegando en este tema: 1 invitado(s)