No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Diagrama de implementación de Abstract Factory

13/27
Recursos

Aportes 3

Preguntas 1

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

¡Hola! Aquí va mi aporte:

Para implementar abstract factory, cumple con lo siguiente:

  1. Declara una clase base o interfaz del producto por cada uno de los productos en el catalogo, ejemplo, ProductA -> Mastodon, ProductB -> Rhino
  2. Implementa clases de productos que hereden o implementen la interfaz creada en el paso 1 para cada uno de los tipos de cada familia, es decir, ProductXA -> Mastodon Sedán, Product YB -> Mastodon hatchback. Luego, ProductXB -> Rhino Sedán, Product YB -> Rhino hatchback.
  3. Declara una clase abstracta de fábrica o una interfaz que declare la creación de métodos para cada una de las fabricas a crear, ejemplo, AbstractFactory -> Fabrica de carros con métodos createSedan y createHatchback (La fábrica de las fabricas)
  4. Por último, crea las fabricas concretas que implementen o hereden de la clase / interfaz definida en el paso 3, ejemplo, FamilyYFactory -> FabricHatchback y FamilyXFactory -> FabricSedan.

¡Espero que te sea de ayuda!

Este diseño me parece extremadamente limpio, como si de engranajes se tratase 🤘. Si la situación lo requiere, suena muy buena idea adoptar este patrón.

Lo que explica el diagrama pero con codigo java 👇 ```java public class Main { public static void main(String\[] args) { FactoryX factoryX = new ProductXFactory(); FactoryY factoryY = new ProductYFactory(); ProductA productXA = factoryX.createProductA(); ProductB productXB = factoryX.createProductB(); ProductA productYA = factoryY.createProductA(); ProductB productYB = factoryY.createProductB(); System.out.println(productXA.message() + factoryX.getVersion()); System.out.println(productXB.message() + factoryX.getVersion()); System.out.println(productYA.message() + factoryY.getVersion()); System.out.println(productYB.message() + factoryY.getVersion()); } } interface ProductA { String message(); } interface ProductB { String message(); } interface AbstractFactory { ProductA createProductA(); ProductB createProductB(); } interface FactoryX extends AbstractFactory{ String getVersion(); } interface FactoryY extends AbstractFactory{ String getVersion(); } class ProductXA implements ProductA { @Override public String message() { return "I'm a product type A"; } } class ProductXB implements ProductB{ @Override public String message() { return "I'm a product type B"; } } class ProductYA implements ProductA { @Override public String message() { return "I'm a product type A"; } } class ProductYB implements ProductB{ @Override public String message() { return "I'm a product type B"; } } class ProductXFactory implements FactoryX{ @Override public ProductA createProductA() { return new ProductXA(); } @Override public ProductB createProductB() { return new ProductXB(); } @Override public String getVersion() { return " :Version X"; } } class ProductYFactory implements FactoryY{ @Override public ProductA createProductA() { return new ProductYA(); } @Override public ProductB createProductB() { return new ProductYB(); } @Override public String getVersion() { return " :Version Y"; } } ```