对象数量过多,占用较大的内存,可考虑享元
class Person {
private:
// 唯一标识
string m_name;
public:
explicit Person(const string &name):m_name(name){}
};
class PersonFactor {
private:
// 缓存对象
unordered_map<string, Person* > map;
public:
Person* GetPerson(const string &name) {
auto iter = map.find(name);
if (iter == map.end()) {
Person* person = new Person(name);
map[name] = person;
return person;
}
return iter->second;
}
~PersonFactor() {
for(auto it : map) {
delete it.second;
}
map.clear();
}
};
int main() {
PersonFactor* factor = new PersonFactor;
factor->GetPerson("123");
delete factor;
}