Tengo un ABC con varias clases derivadas. Para crear estas clases derivadas que utilizo el patrón de la fábrica: archivoObjeto de fábrica frente a la función de fábrica
.h:
class derivedFactory
{
public:
base* createInstance();
};
archivo .cpp:
base* derivedFactory::createInstance()
{
return new derived();
}
¿Hay alguna ventaja de este sobre sólo tener una función libre:
archivo .h:
base* derivedFactoryFunction();
archivo .cpp:
base* derivedFactoryFunction()
{
return new derived();
}
también: Yo uso el patrón de fábrica abstracta para la inyección de dependencia. Puede ser que utilice una jerarquía de herencia basado en el ABC:
class objectCreator
{
public:
base* create() = 0;
};
¿Hay alguna ventaja de usar esta función durante un puntero:
boost::function<base*()> factory_ptr;
Usando boost :: bind/lambda esto parece hacer mi código más composable, y si me gustaría puedo envolver un objeto de fábrica real en él. Puedo ver que puede haber una ligera disminución en el rendimiento, pero esto es mucho de qué preocuparse, ya que solo se llama durante el inicio.
El puntero permitiría implementar el patrón abstracto de fábrica. Lo he expandido arriba –