Joh*_*ell 18 c# c++ design-patterns idioms
好吧,考虑一下我们大多数人多次使用过的常见习语(我假设):
class FooBarDictionary
{
private Dictionary<String, FooBar> fooBars;
...
FooBar GetOrCreate(String key)
{
FooBar fooBar;
if (!fooBars.TryGetValue(key, out fooBar))
{
fooBar = new FooBar();
fooBars.Add(key, fooBar);
}
return fooBar;
}
}
Run Code Online (Sandbox Code Playgroud)
它有任何确定的名称吗?
(是的,它是用C#编写的,但它可以"轻松"转移到C++.因此该标签.)
这有点取决于你为什么这样做 - 这个成语是我见过的被称为memoization,缓存,按需初始化,第一次使用时创建的成语.通常我调用方法"ensureFoo"而不是"GetOrCreate"