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[1]​.