Abstract Factory

Patrón de diseño creacional

El patrón de diseño Abstract Factory busca agrupar un conjunto de clases que tiene un funcionamiento en común llamadas familias, las cuales son creadas mediante un Factory, este patrón es especialmente útil cuando requerimos tener ciertas familias de clases para resolver un problema, sin embargo, puede que se requieran crear implementaciones paralelas de estas clases para resolver el mismo problema pero con una implementación distinta.

Estructura del patrón de diseño Abstract Factory.
Estructura del patrón de diseño Abstract Factory.

La estructura de Abstract Factory puede resultar muy enredosa ya que tiene muchos componentes y éstos aparentemente se mezclan entre sí. Para comprender mejor cómo funciona este patrón explicaremos cada componente:

  • Client: Representa la persona o evento que dispara la ejecución del patrón.
  • AbstractProduct (A, B): Interfaces que definen la estructura de los objetos para crear familias.
  • ConcreteProduct (A, B): Clases que heredan de AbstractProduct con el fin de implementar familias de objetos concretos.
  • ConcreteFactory: Representan las fábricas concretas que servirán para crear las instancias de todas las clases de la familia. En esta clase debe existir un método para crear cada una de las clases de la familia.
  • AbstractFactory: Define la estructura de las fábricas y deben proporcionar un método para cada clase de la familia.
Diagrama de secuencia del patrón Abstract Factory
Diagrama de secuencia del patrón Abstract Factory.
  1. El cliente solicita la creación del ConcreteFactory1 al AbstractFactory.
  2. El AbstractFactory crea una instancia del ConcreteFactory1 y la regresa.
  3. El cliente le solicita al ConcreteFactory1 la creación de un ProductA.
  4. El ConcreteFactory1 crea una instancia del ProductA1 el cual es parte de la familia1 y lo regresa.
  5. El cliente esta vez solicita la creación del ConcreteFactory2 al AbstractFactory.
  6. El AbstractFactory crea una instancia del ConcreteFactory2 .
  7. El cliente le solicita al ConcreteFactory2 la creación de un ProductA .
  8. El ConcreteFactory2 crea una instancia del ProductA2 el cual es parte de la familia2 y lo regresa.

Ejemplo del mundo real

Mediante la implementación del patrón de diseño Abstract Factory desarrollaremos una aplicación que permite la comunicación con el Back End mediante Web Services y servicios REST, de tal forma que nuestro cliente pueda elegir mediante configuración el tipo de comunicación que se utilizará.

Descubre como el patrón Abstract Factory nos ayuda a resolver este problema
Descubre como el patrón Abstract Factory nos ayuda a resolver este problema

¿Sabes la importancia de los patrones de diseño?

Los patrones de diseño son la clave para crecer profesionalmente hacia la arquitectura de software, sin mencionar que los salarios son los más altos de la industria de IT, descúbrelo en este video.

🎉 Este video es parte del curso de patrones de diseño, inscríbete aquí 🎉

Acerca de este libro

Introducción a los patrones de diseño

Todo lo que acabas de ver en este artículo es solo una pequeña parte del libro Introducción a los patrones de diseño, el libro más completo de patrones de diseño en español, abarcamos 25 patrones de diseño junto con 25 proyectos del mundo real. Olvídate de aprender patrones de diseño con los ejemplos típicos de Internet de cómo hacer una pizza, animales y figuras geométricas. te invito a que veas mi libro:

Ver libro
Todos los derechos reservados ©
Reactive programming
LinkedinYoutubeTwitterFacebook

© 2021, Copyright - Oscar Blancarte. All rights reserved.