¿Cuál es la diferencia entre el patrón de fábrica y el patrón de fábrica abstracto?

los diferencia principal entre el patrón de fábrica y el patrón de fábrica abstracto es que el el patrón de fábrica proporciona un método para crear objetos sin especificar la clase exacta utilizada para crearlo, mientras que el patrón de fábrica abstracto proporciona un método para combinar un grupo de fábricas individuales sin especificar sus clases concretas.

Los patrones de diseño son las soluciones a los problemas generales que enfrentan los desarrolladores de software cuando desarrollan software. Son genéricos y no dependen del tipo de sistema o del lenguaje de programación. Además, son soluciones probadas y proporcionan las mejores prácticas. Existen tres tipos de patrones de diseño como creacionales, estructurales y de comportamiento. Los patrones de creación proporcionan un método para crear objetos mientras ocultan la lógica creacional. Además, hacen que el programa sea más flexible. El patrón de fábrica y el patrón de fábrica abstracto son dos de estos patrones de diseño creativo..

Áreas clave cubiertas

1. ¿Qué es el patrón de fábrica?
     - Definición, Funcionalidad
2. ¿Qué es el patrón abstracto de fábrica?
     - Definición, Funcionalidad
3. ¿Cuál es la diferencia entre el patrón de fábrica y el patrón de fábrica abstracto?
     - Comparación de diferencias clave

Términos clave

Resumen patrón de fábrica, patrón de fábrica

¿Qué es el patrón de fábrica?

Un patrón de fábrica proporciona un buen método para crear objetos. Usando este método, el programador puede crear objetos sin exponer la lógica creacional. También es posible referir el objeto recién creado usando una interfaz común. Consulte el siguiente programa.

Figura 1: interfaz de forma

Figura 2: Clase Rectangular

Figura 3: clase cuadrada

Figura 4: Clase de círculo

Figura 5: Clase ShapeFactory

Figura 6: Clase principal

La interfaz Shape tiene un método abstracto llamado draw. Rectángulo, Cuadrado y Círculo son clases. Implementan la interfaz Shape. Por lo tanto, estas clases proporcionan una implementación para el método draw. El método de dibujo en cada clase tiene su propia implementación. La clase ShapeFacotry tiene un método llamado getShape. Se pone una cadena. Este método devolverá un objeto de acuerdo con la cadena recibida.

En el método principal, hay un objeto llamado forma. Es de tipo ShapeFactory. El método getShape se llama usando ese objeto. La cadena "Rectangle" se le pasa. El objeto devuelto se almacena en shape1, que es de tipo Shape. Del mismo modo, las cadenas "SQUARE" y "CIRCLE" se pasan a getShape. Los objetos devueltos se almacenan en shape2 y shape3. Cada objeto llama al método de dibujo y el método de dibujo correspondiente se ejecuta de acuerdo con la cadena pasada.

El programa principal utiliza la clase ShapeFactory para obtener un objeto Shape. Pasa la cadena requerida a ShapeFactory para obtener el tipo de objeto que necesita.

¿Qué es el patrón abstracto de fábrica?

Abstract Factory Pattern utiliza una super fábrica y crea otras fábricas. También es conocido como fábrica de fábricas. En este patrón, una interfaz crea una fábrica de objetos relacionados sin especificar explícitamente sus clases. En otras palabras, después de crear la súper fábrica, puede crear otras fábricas. Consulte el siguiente programa.

Figura 7: Interfaz de color

Figura 8: Clase amarilla

Figura 9: Clase naranja

Figura 10: clase púrpura

Figura 11: clase AbstractFactory

Figura 12: Clase ShapeFactory

Figura 13: Clase ColorFactory

Figura 14: Clase FactoryProducer

Figura 15: Programa principal

La forma de la interfaz y las clases Rectángulo, Cuadrado, Círculo son iguales a las de la sección anterior. El color es una interfaz; Tiene un método abstracto llamado relleno. Las clases Yellow, Orange y Purple implementan esa interfaz. Por lo tanto, estas clases proporcionan implementación para el método de relleno. La clase AbstrcatFactory tiene dos métodos como getShape y getColor. La clase ShapeFactory extiende AbstractFacotry. Del mismo modo, la clase ColorFactory extiende AbstractFactory. Estas clases tienen las implementaciones para los métodos getShape y getColor..

La clase FactoryProducer tiene un método llamado getFactory que devuelve un objeto de tipo AbstractFactory. Devuelve un objeto ShapeFactory o un objeto ColorFactory o un valor nulo según la cadena que recibe. Finalmente, el método principal utiliza FactoryProducer para obtener AbstractFactory para obtener fábricas de clases concretas.

Además, el método principal utiliza FactoryProducer para obtener un objeto AbstractFactory. Pasa información como “RECTANGLE”, “SQUARE”, “CIRCLE” a AbstractFactory para obtener el tipo de objeto que necesita. Además, también pasa información como "AMARILLO", "NARANJA", "PÚRPURA" para obtener el tipo de objeto que necesita. 

Diferencia entre el patrón de fábrica y el patrón de fábrica abstracto

Definición

El patrón de fábrica es un patrón de creación que utiliza un método para tratar el problema de crear objetos sin tener que especificar la clase exacta del objeto que se creará. El patrón abstracto de fábrica, por otro lado, es un patrón creacional que proporciona una manera de encapsular a un grupo de fábricas individuales que tienen un tema común sin especificar sus clases concretas. Por lo tanto, estas definiciones explican la principal diferencia entre el patrón de fábrica y el patrón de fábrica abstracto..

Ocultando la construcción

Otra diferencia entre el patrón de fábrica y el patrón de fábrica abstracto es que el patrón de fábrica oculta la construcción de un solo objeto, mientras que el patrón de fábrica abstracto oculta la construcción de una familia de objetos relacionados.

Conclusión

El patrón de fábrica y el patrón de fábrica abstracta son dos patrones de diseño creativo. El patrón de fábrica proporciona un método para crear objetos sin especificar la clase exacta utilizada para crearlo. En contraste, el patrón de fábrica abstracto proporciona un método para combinar un grupo de fábricas individuales sin especificar sus clases concretas. Por lo tanto, esta es la principal diferencia entre el patrón de fábrica y el patrón de fábrica abstracto.

Referencia:

1. “Patrón de diseño de método de fábrica”. Javatpoint, disponible aquí.
2. “Abstract Factory Pattern”. Javatpoint, disponible aquí.