当前位置: 首页 > news >正文

图片网站模板濮阳网站建设专家团队

图片网站模板,濮阳网站建设专家团队,大兴区网站建设,邯郸市建筑网架公司目录 1. 享元模式简介 2. 代码示例 1. 享元模式简介 享元模式是一种结构型模式。 享元模式用于缓存共享对象,降低内存消耗。共享对象相同的部分,避免创建大量相同的对象,减少内存占用。 享元模式需要将对象分成内部状态和外部状态两个部分…

目录

1. 享元模式简介

2. 代码示例


1. 享元模式简介

享元模式是一种结构型模式

享元模式用于缓存共享对象,降低内存消耗。共享对象相同的部分,避免创建大量相同的对象,减少内存占用。

享元模式需要将对象分成内部状态和外部状态两个部分

所谓内部状态指的是可以共享的状态,外部状态指的是会随着对象的使用而改变的的状态。

比如,如果要模拟一个五子棋程序。对棋子来说,棋子的图片就属于内部状态,而棋子的位置和大小就属于外部状态。棋子的图片可以被所有使用棋子的地方所共享,棋子的位置和大小每个使用的地方都不一样。


享元模式通常要搭配简单工厂模式一起使用,在简单工厂内使用一个享元对象的缓存池,缓存享元对象。

2. 代码示例

就以棋子模拟程序作为示例,代码如下所示:

#if 1#include <iostream>
#include <map>
#include <memory>
#include <string>using namespace std;enum ChessPieceType { White, Black };class ChessPiece {
public:virtual void Draw(int x, int y) = 0;virtual ~ChessPiece() {}
};class WhiteChessPiece : public ChessPiece
{
public:void Draw(int x, int y) override{cout << "在(" << x << "," << y << ") 位置放置白棋子" << endl;}
};class BlackChessPiece : public ChessPiece
{
public:void Draw(int x, int y) override{cout << "在(" << x << "," << y << ") 位置放置黑棋子" << endl;}
};class ChessFactory
{
public:static shared_ptr<ChessPiece> CreateChessPiece(ChessPieceType type){if (chessPieces.find(type) == chessPieces.end()){if (type == White){chessPieces[type] = make_shared<WhiteChessPiece>();}else if (type == Black){chessPieces[type] = make_shared<BlackChessPiece>();}}return chessPieces[type];}
private:static map<ChessPieceType, shared_ptr<ChessPiece>> chessPieces;
};map<ChessPieceType, shared_ptr<ChessPiece>> ChessFactory::chessPieces;int main()
{auto piece1 = ChessFactory::CreateChessPiece(ChessPieceType::White);piece1->Draw(1, 2);auto piece2 = ChessFactory::CreateChessPiece(ChessPieceType::Black);piece2->Draw(3, 4);auto piece3 = ChessFactory::CreateChessPiece(ChessPieceType::White);piece3->Draw(5, 6);return 0;
}#endif

运行截图如下:

http://www.yayakq.cn/news/703843/

相关文章:

  • 外贸管理网站模板三一重工的网站是哪家做的
  • 网站快速备案网络营销seo优化
  • 龙华网站网页设计运维培训 网站建设
  • 中国建设网站下载学做软件的网站
  • 专业的网站建设运营公众号做网站
  • 在vs做的项目怎么连接到网站网站建设制作、微信公众号
  • 个人网站怎么申请wordpress 阿里云视频点播
  • 网站中的搜索框怎么做建设银信用卡网站首页
  • 查看网站服务器ip山西公司网站开发
  • 利辛做网站江门网站制作推广
  • 百度怎么网站排名谁知道做网站的电话
  • 网站主页跳转indexwordpress 文章数据表
  • 个人网站备案 服务内容怎么写wordpress 报表插件
  • 如何做游戏试玩网站wordpress中文版 显示英文
  • 公司网站注销流程福田欧曼服务站
  • 网站删除模块书画展示网站源码
  • 备案添加网站龙岩网络营销平台
  • 彩票网站建设成本wordpress 写权限设置
  • 巢湖路桥建设集团网站免费的高清视频素材网站
  • 具有口碑的柳州网站建设推荐外国老头做中文网站
  • 无锡市住房和城乡建设部网站云服务器做视频网站
  • 红酒网站制作做盗版网站会坐牢吗
  • 建设局合同备案是哪个网站wordpress付款下载
  • 网站建设与管理 规划书镇江牛吧企业网站建设与推广公司
  • 南昌做网站的公司哪个比较好的西安市建设工程信息
  • 做网站找什么公司工作wordpress戏
  • 模板网站免费郴州市北湖区
  • 川沙网站建设新浪博客 搬家 wordpress 工具
  • 网站的安全性建设网站开发难易处
  • 网站建设 团队介绍大连h5开发公司