Patrón de Diseño Factory

UMLEsta entrada formara parte de un conjunto de entradas dedica específicamente a explicar los diferentes patrones de diseño que existe.

El patrón de diseño Factory es uno de los mas utilizados ya que nos permite crear en tiempo de ejecución una Instancia o un resultado a partir de ciertos parámetros e incluso sin parámetros.

Patrón de diseño Factory Method
Patrón de diseño Factory Method

En este caso desarrollaremos un Factory que nos regrese una instancia a adecuada para conectarnos a distintas base de datos. El ejemplo se centra en que a partir del tipo de base de datos que queremos utilizar podremos conectarnos a ella sin necesidad de modificar nada de código.

Primero que nada definimos una interface a la cual todos los adaptadores deben implementar:

IDBAdapter

Fig.1: Interfaz común para todos los adaptadores de base de datos.

Seguido, implementamos una clase adaptador para cada base de datos a la cual nos queremos conectar.

MySQLDBAdapterFig.2: Adaptador para la base de datos MySQL que implementa IDBAdapter.

OracleDBAdapterFig.3: Adaptador para la base de datos Oracle que implementa IDBAdapter.

SQLServerDBAdapterFig.4:Adaptador para la base de datos SQLServer que implementa IDBAdapter.

Hasta este momento tenemos los adaptadores para conectarnos a la base de datos que queramos pero todo por separado por lo cual implementamos la clase Factory la cual tendrá la lógica para determinar que adaptador debemos utilizar

DBFactoryFig.5: Clase la cual es utilizada como factory y regresa una instancia adecuada según el DBType el cual es un Enum

DBTypeFig.6: Enumeración con los distintos tipos de base de datos soportada

Finalmente podemos escribir un programa que requiera conectarse a la base de datos Oracle para lo cual le pase el parámetro DBType.Oracle y regresa una instancia de IDBAdapter la cual al ser una interfaz no le importa realmente que base de datos y el programa podría continuar sin ningún problema si queremos cambiar la base de datos por ejemplo a MySQL o SQLServer.

FacotryMain

Probablemente se te complique un poco pero te sugiero que escribas tu código por tu cuente y vallas probando hasta que te quede todo claro.

 

Este es un uso básico y Factory puede servir para cosas mucho mas complejas ¿En tu opinión, Para que usarías un Factory?

 

Ya está a la venta mi nuevo libro “Introducción a los patrones de diseño“, en donde expongo los 25 patrones de diseño más utilizados y explicados desde un enfoque del mundo real, con ejemplos que pueden ser aplicados en tus proyectos. Sin duda es unos de los libros más completos de patrones de diseño en español.

Artículos relacionados

Java 8 – Default Method Una de las novedades que trae Java 8 a nivel del lenguaje, son los Default Method o Métodos default, los cuales permiten agregar métodos implementados...
Patrón de diseño Observer Este es sin duda uno de los patrones mas utilizados cuando trabajamos con aplicaciones de escritorio o al utilizar la Event-Driver Architecture(EDA).U...
Java Message Service (JMS) En este Post se habla hacer de la especificación de JMS, los patronos de entrega de manejes que soporta como lo son Punto a Punto(P2P) y Publicador/Su...

Oscar Blancarte

Ideológico, Innovador y emprendedor, Padre, Tecnólogo y Autor, amante de la ciencia y la tecnología en todos sus colores y sabores. Arquitecto de software & Full Stack Developer con experiencia en la industria del desarrollo de software y la consultoría. Amante de la programación y el Ajedrez.

2 comentarios en “Patrón de Diseño Factory

  1. Saluton.
    Muy buen aporte, de gran utilidad para aprender la implementación de un patron Factory. En un principio yo tambien comence a utiliar los patrones Factory en conecciones a BD, pero en la actualidad he implementado entity framework, ya no he visto que se utilize la implementación de Factory en conecciones, muchos de mis colegas comentan que requiere tiempo desarrollar algo así, pero si lo he implementado en funcionalidad para usuarios,como control de roles en un sistema… es una buena plicación bueno creo yo.
    Gran aporte compañero Felicidades.

    1. Gracias amigo.
      Este solo es un ejemplo y no es exclusivo para conexiones a base de datos, sin embargo se me hace un ejemplo muy practico para que todos podamos entender de que se trata.
      Con respecto al tiempo de desarrollo, yo creo que el tiempo de desarrollo es algo absurdo cuando los beneficios son mucho mas grandes y es que los patrones de diseño están diseñados para que nuestra aplicación se mucho mas fácil de mantener.

      Saludos

Deja un comentario

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