Patrones de Diseño

Por: Ivan García

¿Qué son?

Son un conjunto de prácticas utilizadas para abordar y resolver problemas típicos y recurrentes de Programación Orientada a Objetos.

Tipos de Patrones

  • Creacionales: Utilizados para separar la creación de objetos y encapsular estos, de esta manera separando la implementación del cliente de los objetos que se utilizan.
  • De Comportamiento: Definen como se llevará a cabo la interacción entre objetos y clases
  • Patrones estructurales: Tienen que ver con la definición de objetos y clases. El concepto de herencia es utilizado para definir interfaces y formas para crear objetos con nuevas funcionalidades.

¿Para qué utilizarlos?

Aunque su uso no es obligatorio, es muy recomendado utilizarlas para desarrollar aplicaciones robustas y fáciles de mantener, garantizando de esta manera la escalabilidad, interoperabilidad y reusabilidad del sistema.

Ejemplos de Patrones

Existe una variedad muy amplia de patrones utilizados para casos específicos, en este tutorial comenzaremos con uno de los patrones de diseño más simples: Singleton e iremos avanzando con los demás patrones.

SINGLETON

Este patrón corresponde al tipo creacional porque provee una de las mejores formas de crear un objeto.

Este patrón consiste en una clase, la cual es responsable de crear un objeto mientras se asegura que solo este objeto se cree una sola vez, de esta manera se llamará a lo largo del sistema solo a esta instancia creada, sin la necesidad de crearla otra vez, asegurando así que en cualquier otra clase estamos trabajando solo con ese objeto singleton. Esta forma de patrón es muy útil por ejemplo si se quiere tener en todo momento el objeto que llevó a cabo la conexión con una base de Datos SQL, como sólo la primera vez realizaremos una conexión a base de datos, este objeto tendrá la información de la misma en todo momento y accesible desde cualquier otra clase.

Implementación

Crearemos una clase ClaseSingleton, esta tiene su constructor definido como privado y tiene una instancia estática de sí misma.

Esta clase provee un método estático para obtener la mencionada instancia estática desde cualquier otra clase, si la instancia no fue creada se crea una nueva y de ahí en adelante se devuelve solo esta instancia.

Crearemos otra clase SingletonDemo, la cual utilizará nuestra ClaseSingleton para obtener un objeto SingletonDemo

Implementación ClaseSingleton (Java):


public class  ClaseSingleton  { 

    //definir un objeto de ClaseSingleton 
    private static ClaseSingleton instance = null;
 
    //especificar el constructor como privado, de esa manera la clase no
    //podrá ser instanciada desde otra clase 
    private ClaseSingleton (){}

    //Devuelve el único objeto disponible creado, si es que no fue instanciado
    //crea una nueva instancia
    public static ClaseSingleton getInstance(){
       if(instance == null){
            instance =  new ClaseSingleton ();
       }
    return instance;
   }
  
public void showMessage(){
    System.out.println("Hello World!");
   }
}

Implementación de clase SingletonDemo:

public class SingletonDemo {   
    public static void main(String[] args) {       

    //Llamada ilegal al constructor      
    //Compile Time Error: El constructor ClaseSingleton () no es visible      
    // ClaseSingleton object = new ClaseSingleton ();       
    //Obtener el unico objeto disponible      
    //Al realizar esta definición se crea la nueva instancia si es que no      
    //fue creada antes, en posteriores llamados devolverá la instancia      
    //creada la primera vez      
 ClaseSingleton singletonObject = ClaseSingleton.getInstance();       
    //mostrar el mensaje 
     singletonObject.showMessage();   
  }
} 

Luego de ejecutar el método showMessage del objeto singleton la salida debería ser: Hello World! .

De esta manera, al llamar desde otra clase al método getInstance de la clase ClaseSingleton, se obtiene la misma instancia cada vez, de esta manera las variables y métodos que pueda tener una clase singleton podemos reutilizarlas desde otras clases.

CONCLUSION

El uso de patrones de diseño ayudan a estandarizar el código, haciéndolo de esta manera más comprensible para otros desarrolladores, en este tutorial se vio el patrón Singleton, las aplicaciones posibles a este dependen del caso y la imaginación del desarrollador, en otros tutoriales siguientes estaremos implementando otros patrones.




Deja un comentario

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

Posts de Prensa Recientes