Heres es un poco de información adicional que puede ayudar a comprender mejor algunas de las otras respuestas técnicamente correctas, pero más cortas.
En el sentido más estricto, una Class Factory es una función o método que crea o selecciona una clase y la devuelve, en función de alguna condición determinada a partir de parámetros de entrada o contexto global. Esto es necesario cuando el tipo tipo del objeto necesario no se puede determinar hasta el tiempo de ejecución. La implementación se puede hacer directamente cuando las clases son en sí mismas objetos en el lenguaje utilizado, como Python.
Dado que el uso principal de cualquier clase es crear instancias de sí mismo, en lenguajes como C++ donde las clases no son objetos que pueden pasarse y manipularse, a menudo se puede lograr un resultado similar simulando "constructores virtuales". donde llamas a un constructor de clase base pero recuperas una instancia de alguna clase derivada.Esto debe simularse porque los constructores realmente no pueden ser virtual en C++, por lo que tales fábricas de objetos y no de clase generalmente se implementan como funciones independientes o métodos estáticos.
✶ funciones virtuales se resuelven normalmente "late" por el tipo real de objeto referenciado, pero en el caso de constructores, el objeto no existe, sin embargo, por lo que el tipo deben ser determinados por algún otro medio.
Las mejores implementaciones son aquellas que manejan nuevas clases candidatas automáticamente cuando se agregan en lugar de tener un determinado conjunto finito actualmente codificado en la fábrica (aunque la compensación suele ser aceptable si la fábrica es el único lugar que requiere modificación).
El libro de James Coplien de 1991 Advanced C++: Programming Styles and Idioms tiene detalles sobre una forma de implementar dichos constructores virtuales genéricos en C++. Hay formas incluso mejores de hacerlo con C++ templates, pero eso no estaba cubierto en el libro antes de que se agregue a la definición del lenguaje estándar. De hecho, las plantillas C++ en sí mismas son fábricas de clases, ya que instancian una nueva clase siempre que se utilicen con diferentes argumentos de tipo real. Actualización: Localicé un documento de 1998 que escribió para EuroPLoP titulado C++ Idioms donde, entre otras cosas, revisa y reagrupa los modismos en su libro en forma de patrón de diseño al estilo 1994 Design Patterns: Elements of Re-Usable Object-Oriented Software libro. Tenga en cuenta especialmente la sección Virtual Constructor (que usa su estructura de patrón Envelope/Letter).
Consulte también las respuestas relacionadas aquí para la pregunta Class factory in Python. También vea Abstract Factory, Template Style que es un artículo del Dr. Dobb de 2001 también sobre implementarlos con Plantillas de C++.