¿Cuál es la diferencia entre Factory Method y Abstract Factory?
Opciones
- No hay diferencia entre los dos, solo cambia el nombre
- Factory Method crea un producto; Abstract Factory crea familias de productos (Opción correcta)
- Factory Method es para threads; Abstract Factory, para bases de datos
- Abstract Factory no tiene interfaces y solo funciona con clases
Respuesta
Factory Method: un método que decide qué clase de producto crear. Abstract Factory: una interface para crear familias completas de objetos relacionados que van juntos
Por qué
Factory Method: un método devuelve un objeto de cierta interface y oculta qué clase concreta se crea: NotificationFactory.create("email") da un EmailNotifier.
Abstract Factory: un objeto que crea varios productos relacionados que deben ser coherentes. Ejemplo: una UiFactory que crea Button, Checkbox y Menu con aspecto de Windows o de Mac; cambias toda la familia cambiando la factory.
En Spring, el propio contenedor actúa como una factory gigante.
Recuerda
Factory Method = un producto. Abstract Factory = familia de productos.