Factory method es un patrón de diseño creacional que resuelve el problema de crear objetos de producto sin especificar sus clases concretas.
El patrón Factory Method define un método que debe utilizarse para crear objetos, en lugar de una llamada directa al constructor (operador new). Las subclases pueden sobrescribir este método para cambiar las clases de los objetos que se crearán.
Si no sabes la diferencia entre varios patrones y conceptos de la fábrica, lee nuestra Comparación de fábricas.
Ejemplos de uso: El patrón Factory Method se utiliza mucho en el código Java. Resulta muy útil cuando necesitas proporcionar un alto nivel de flexibilidad a tu código.
El patrón está presente en las principales bibliotecas de Java:
Identificación: Los métodos fábrica pueden ser reconocidos por métodos de creación, que crean objetos a partir de clases concretas, pero los devuelven como objetos del tipo abstracto o interfaz.
Producción de elementos GUI multiplataforma
En este ejemplo, Buttons (Botones) juega el papel de producto y los diálogos actúan como creadores.
Los distintos tipos de diálogos requieren sus propios tipos de elementos. Por eso creamos una subclase para cada tipo de diálogo y sobrescribimos sus métodos fábrica.
Ahora, cada tipo de diálogo instanciará clases de botón. El diálogo base trabaja con productos utilizando su interfaz común, por eso su código sigue siendo funcional tras todos los cambios.
buttons
buttons/Button.java: Interfaz común de producto
buttons/HtmlButton.java: Producto concreto
buttons/WindowsButton.java: Otro producto concreto
factory
factory/Dialog.java: Creador base
factory/HtmlDialog.java: Creador concreto
factory/WindowsDialog.java: Otro creador concreto
Demo.java: Código cliente
OutputDemo.txt: Resultados de la ejecución (HtmlDialog)
OutputDemo.png: Resultados de la ejecución (WindowsDialog)