いくつかの派生クラスを持つ ABC があります。これらの派生クラスを作成するには、ファクトリ パターンを使用します。
.h ファイル:
class derivedFactory
{
public:
base* createInstance();
};
.cpp ファイル:
base* derivedFactory::createInstance()
{
return new derived();
}
無料の関数を使用するだけで、これに利点はありますか:
.h ファイル:
base* derivedFactoryFunction();
.cpp ファイル:
base* derivedFactoryFunction()
{
return new derived();
}
また、依存性注入には抽象ファクトリ パターンを使用します。ABC に基づく継承階層を使用する場合があります。
class objectCreator
{
public:
base* create() = 0;
};
関数ポインタよりもこれを使用する利点はありますか:
boost::function<base* ()> factory_ptr;
boost::bind/lambda を使用すると、コードがより構成可能になるようです。必要に応じて、実際のファクトリ オブジェクトをラップできます。パフォーマンスがわずかに低下する可能性があることがわかりますが、これは起動時にのみ呼び出されるため、心配する必要があります。