Factory Method (patrón de diseño)
# Factory Method (patrón de diseño)

En diseño de software, el patrón de diseño Factory Method consiste en utilizar una clase constructora (al estilo del Abstract Factory) abstracta con unos cuantos métodos definidos y otro(s) abstracto(s): el dedicado a la construcción de objetos de un subtipo de un tipo determinado. Es una simplificación del Abstract Factory, en la que la clase abstracta tiene métodos concretos que usan algunos de los abstractos; según usemos una u otra hija de esta clase abstracta, tendremos uno u otro comportamiento.

Este patrón, pretende resolver problemas recurrentes con un diseño flexible y reusable para software orientado a objetos. Específicamente el método Factory resuelve cómo un objeto puede ser creado haciendo que las subclases puedan decidir qué clases instanciar y cómo una clase puede diferir la instanciación de subclases.

## Estructura

Las clases principales en este patrón son el creador y el producto. El creador necesita crear instancias de productos, pero los tipos concretos de cada producto no deben estar reflejadas en el propio creador si no que las posibles subclases del creador deben poder especificar los tipos concretos, subclases, de los productos para utilizar.

La solución para esto es hacer un método abstracto (el método de la fábrica) que se define en el creador. Este método abstracto se define para que devuelva un producto. Las subclases del creador pueden sobrescribir este método para devolver subclases apropiadas del producto...

## Ejemplo de código

Java

Ahora definimos el creador concreto:

Definimos el producto y su implementación concreta:

Ejemplo de uso:

Python

