我有一个工厂类,它将用于创建某个类的大量实例。创建过程非常混乱,可能需要相当长的时间。所以我认为存储已经在工厂内创建的类的实例会很聪明,我可以稍后再回忆它们。
创建取决于单个参数(名称),因此可以将内容存储在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
,为了这样微不足道的事情而牺牲函数的特性。这些牺牲合乎逻辑吗?
如果这个问题太依赖口味,请不要拍我。