加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
享元模式.cpp 1.03 KB
一键复制 编辑 原始数据 按行查看 历史
遇见 提交于 2021-07-16 17:30 . 修改享元模式
#include <iostream>
#include <map>
using namespace std;
/**************************************
通过共享的方式有效的支持大量细粒度的对象
主要解决的是某个对象需要用到很多次则将其缓存下来每次使用在查找出来避免了数据的重复创建和多个副本的开辟
**************************************/
class Font{
private:
string key;
public:
Font(const string & key)
{
}
Font(){
}
};
class FontFactory{
private:
map<string,Font *>fontPool;
public:
Font *GetFont(const string key)
{
auto FontFind = fontPool.find(key);
if(FontFind == fontPool.end())
{
Font *font = new Font(key);
fontPool.insert(make_pair(key,font));
return font;
}
else{
return FontFind->second;
}
}
};
int main(void)
{
FontFactory font;
Font t = font.GetFont("宋体");//这个时候就会创建一个对象然后放入对象工厂
//下次 在使用宋体的时候那么就是直接读取了 不是重新创建
//这适合 使用量比较大的场景 有效解决了对象重复开辟是否所使用的开销
return 0;
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化