Sobes.tech
Junior — Middle

Explique las principales diferencias entre los patrones 'Método de fábrica' y 'Fábrica abstracta'.

sobes.tech AI

Respuesta de la IA

El patrón Método de Fábrica (Factory Method) define una interfaz para crear un objeto, pero permite que las subclases decidan qué clase instanciar. Es decir, la creación de un objeto concreto se delega a las subclases. Se usa generalmente cuando hay un producto y varias opciones para su implementación.

Fábrica Abstracta (Abstract Factory) proporciona una interfaz para crear familias de objetos relacionados o dependientes sin especificar sus clases concretas. Es un patrón de nivel superior que combina varios métodos de fábrica para crear diferentes objetos relacionados.

Diferencias principales:

  • Enfoque: El Método de Fábrica crea un producto, la Fábrica Abstracta una familia de productos.
  • Estructura: El Método de Fábrica generalmente se implementa mediante herencia y sobrescritura del método de creación, la Fábrica Abstracta mediante composición y un conjunto de interfaces.
  • Uso: El Método de Fábrica es adecuado cuando se necesitan crear objetos de un mismo tipo con variaciones, la Fábrica Abstracta cuando se necesitan crear objetos relacionados de diferentes tipos que deben trabajar juntos.

Ejemplo en Dart (Flutter) para el método de fábrica:

abstract class Button {
  void render();
}

class AndroidButton implements Button {
  @override
  void render() => print('Botón Android');
}

class IOSButton implements Button {
  @override
  void render() => print('Botón iOS');
}

abstract class Dialog {
  Button createButton();
  void render() {
    var button = createButton();
    button.render();
  }
}

class AndroidDialog extends Dialog {
  @override
  Button createButton() => AndroidButton();
}

class IOSDialog extends Dialog {
  @override
  Button createButton() => IOSButton();
}

Aquí, Dialog es el método de fábrica que crea diferentes botones dependiendo de la plataforma.

La fábrica abstracta incluirá la creación de múltiples productos relacionados, por ejemplo, botones y casillas de verificación, que deben ser compatibles entre sí.