Patrones creacionales

Los patrones de diseño creacionales son aquellos que nos proponen soluciones para problemas relacionados con la instanciación de objetos. Automatizar el proceso de construcción de un objeto complejo, limitar la instaciación de una clase a un único objeto al que se pueda acceder de manera global o usar un objeto como prototipo para crear otros objetos similares son algunos de los usos de los patrones de diseño creacionales.

  • Factory Method (Método de fabricación): Si necesitamos un objeto de un tipo, pero desconocemos cual es el objeto concreto que vamos a necesitar en el momento del diseño, este es nuestro patrón. Donde dije tipo puedes poner, por ejemplo, conexión a base de datos, y puedes sustituir objeto concreto por conexión a Oracle Database, conexión a MySQL, conexión a PostgreSQL…

  • Abstract Factory (Fábrica abstracta): Si agrupamos los objetos que tienen una cualidad común obtenemos una familia de objetos. Pues bien, este patrón nos ayuda cuando necesitamos instaciar toda una familia de objetos pero no sabemos cual es la familia concreta en el momento del diseño. Un buen ejemplo de familia de objetos son los elementos de una interfaz gráfica (ventana, menú, botón…), y podemos diseñar una familia concreta para cada sistema operativo que queramos soportar.

  • Singleton (Instancia única): Sirve para limitar una clase a una única instanca a la que es posbible acceder de forma global. Piensa en la configuración de una aplicación, que es necesaria utilizar desde varias clases, y ya no hay que instanciar cada vez que se consulte. Se crea una única instancia de la configuración y a compartir.

  • Builder (Constructor virtual): Abstrae el proceso de creación de un objeto complejo. Cuando tienes que crear muchas veces un tipo de objeto, cuando dicho tipo de objeto tiene muchisimos atributos que ajustar o cuando gestionar sus muchos métodos constructores es difícil, este patrón aplica perfectamente.

  • Prototype (Prototipo): Se trata de crea nuevos objetos clonándolos de una instancia ya existente. El patrón perfecto para crear objetos con sutiles diferencias con otro ya creado, como copiar y pegar un círculo en un programa de dibujo.

  • Object Pool (Grupo de objetos): Se trata de crear un almacén de objetos reutilizables, de un determinado tipo. Puede contar con varias opciones de gestión, como limitar el número de objetos disponibles, la cantidad de usos, la operativa a seguir al solicitar un objeto del almacén si todos están siendo utilizados… Este patrón no se encuentra entre los patrones del GoF.

  • Model View Controller o MVC (Modelo Vista Controlador). Este patrón es de arquitectura, no de diseño, y plantea una estructura de tres capas. La primera, la capa modelo, es la que representa los objetos que gestiona la aplicación. El usuario usa la segunda capa, la vista, para visualizar dichos objetos y para hacer peticiones respecto a ellos, interactuando con la aplicación. La tercera y última capa, la capa controlador, recibe y realiza lo que el usuario quiere hacer, y es el encargado de comunicar las dos capas anteriores, ejecutando en el modelo las peticiones que le llegan desde la vista y, posteriormente, informando al usuario, mediante la capa vista, del resultado de sus peticiones.