特定のクラスのインスタンスを大量に作成するために使用されるファクトリ クラスがあります。作成プロセスはかなり難読化されており、かなり時間がかかる場合があります。そのため、ファクトリ内に既に作成されているクラスのインスタンスを保存するのが賢明だと考えていました。後でそれらを呼び出すことができます。
std::map
作成は単一のパラメーター (名前) に依存するため、私が呼び出すに物を格納できますold_instances
。
A A_factory::make_A(std::string const& name)
{
if ( old_instances.find(name) != old_instances.end() )
{
return old_instances.find(name) -> second;
}
else
{
// obfuscated creation process that creates instance 'new_A'
// ...
old_instances.insert(std::pair<std::string, A>(name, new_A)); // <- problem
return new_A;
}
}
ここでの問題は、このルーチン全体がconst
ファクトリのメンバーになる可能性があることです。しかし、old_instances
適応されているためです。
const
この些細なことのために関数の機能性を犠牲にするのはちょっと気まずい気がします。この種の犠牲は論理的ですか?
この質問が好みに依存しすぎている場合は、私を撃たないでください。