享元模式和单例模式都是解决的对象的新能问题。享元模式:顾名思义是共享很小的对象。如何避免大量的细粒度的对象。在我们业务上,有些细腻的东西,我们也可能把他设计成对象。所以如何避免这些大量的小的对象的造成的性能问题。
享元主要思想是共享对象,通过某种类型来确定你需要哪种对象,获取的时候如果已经有了这种类型的对象,直接返回。如果没有,先创造对象,保存到对象池中,然后在返回这个对象。
如下代码所示:
#pragma once
#include<iostream>
#include<map>
using namespace std;
//创建一个背包
class Package
{
public:
public:
Package(string szPackType)
{
m_packType = szPackType;
}
private:
string m_packType;
};
class PackageFactory
{
public:
Package* GetPackage(string szPackType)
{
map<string, Package*>::iterator it = m_mapPackagePool.find(szPackType);
if (it != m_mapPackagePool.end())
{
return it->second;
}
else
{
Package* package = new Package("ck");
m_mapPackagePool["ck"] = package;
return package;
}
}
private:
map<string, Package*> m_mapPackagePool;
};