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

网站建设报什么专业重新安装一个微信

网站建设报什么专业,重新安装一个微信,网站图片添加alt标签,建设网站学什么概念 享元模式是一种结构型设计模式,他摒弃了在每个对象中保存所有数据的方式,通过共享多个对象所共有的相同状态,让你能在有限的内存容量中载入更多对象。享元模式将原始类中的数据分为内在状态数据和外在状态数据。 内在状态:就…

概念

享元模式是一种结构型设计模式,他摒弃了在每个对象中保存所有数据的方式,通过共享多个对象所共有的相同状态,让你能在有限的内存容量中载入更多对象。享元模式将原始类中的数据分为内在状态数据和外在状态数据。
内在状态:就是不变的在各个对象中重复使用的成员变量。
外在状态:每个对象各自不同的情景的数据成员变量。会通过外部函数进行修改。

适用场景

在程序中支持大量的对象且没有足够的内存容量时使用享元模式

使用方式

1、分析代码需求,将成员变量分解为两个部分,

内在状态:就是不变的在各个对象中重复使用的成员变量。

外在状态:每个对象各自不同的情景的数据成员变量。会通过外部函数进行修改。

将原始对象拆分为情景类和享元类。

2、创建一个享元类,用于存储内在状态成员变量。

3、创建一个情景类,用于存储外在状态的成员变量。并在这个情景类中创建一个享元类的引用。

4、创建一个享元工厂类,创建需要的享元对象,如果没有就创建一个新的享元对象并添加到容器或者工厂中。

5、当创建完整的数据类的时候可以去容器或者工厂中寻找有没有需要的享元对象,有的话直接拿出来用,没有的话创建新的。

类关系结构

在这里插入图片描述

代码示例

#include "XiangYuanMoShi.h"int main()
{std::cout << "欢迎东哥来到设计模式的世界!\n";//创建一个size = 2,color= 绿色,伤害 = 100的子弹BulletShareFactory factory;Bullet* bullet = new Bullet();bullet->x = 100;bullet->y = 100;bullet->m_share = factory.getBulletShare(100, "绿色","100");bullet->display();Bullet* bullet2 = new Bullet();bullet2->x = 200;bullet2->y = 200;bullet2->m_share = factory.getBulletShare(100, "绿色", "100");bullet2->display();
}
#pragma once
#include <string>
#include <vector>
#include <iostream>
using namespace std;
//假设有个场景,在一个游戏中我们需要设置子弹的样式,在显示的过程中我们要随时修改子弹的位置
//和方向。子弹有不同的类型(大小、颜色、伤害)//享元类
class BulletShare
{
public:BulletShare() {}~BulletShare() {}//内在数据int size;string color;string hurt;
};//情景类
class Bullet {
public:Bullet() {}~Bullet() {}//外在数据int x;int y;int direction;//内在对象引用BulletShare* m_share = nullptr;void display() {cout << "x:" << x << "   y:" << y<<"   size:" << m_share->size << endl;cout << "share地址:" << m_share << endl;}
};//享元工厂类
class BulletShareFactory {
public:BulletShareFactory() {}~BulletShareFactory() {}//享元类数据存储vector<BulletShare*> m_vBulletShare;BulletShare* getBulletShare(int size, string color, string hurt) {BulletShare* share = nullptr;if (m_vBulletShare.size() > 0) {for (int i = 0; i < m_vBulletShare.size(); i++) {if (m_vBulletShare[i]->color == color &&m_vBulletShare[i]->size == size &&m_vBulletShare[i]->hurt == hurt) {share = m_vBulletShare[i];break;}}}if(!share){share = new BulletShare();if (share) {share->color = color;share->hurt = hurt;share->size = size;m_vBulletShare.push_back(share);}}return share;}
};
http://www.dtcms.com/wzjs/545193.html

相关文章:

  • 泰安企业做网站新浪微博登录网页版
  • js网站源码下载成免费的crm是正规还是仿
  • 做网站页面对PS切图甘肃兰州事件
  • 潍坊中脉网站建设公司用个人电脑做服务器建网站
  • 泊头在哪做网站比较好响应式网站设计与实现论文
  • 飞浪网站建设wordpress界面变宽
  • 上海市建设协会考试网站有哪些免费推广软件
  • 五华网站建设 优帮云微信微博网站建设意见书
  • 网站怎么上传源码建设官方网站怎么修改预留手机
  • 站点推广促销重庆网站建设的价格
  • 南通云网站建设泰兴市住房和建设局网站
  • 建网站要什么网站建设 在电商的作用
  • 深圳品牌型网站建设南京百家湖网站建设
  • 成立网站开发公司培训班网站建设
  • 简单的网站怎么做汽车网站模块
  • 企业网站建设文章成都网站建设需要多少钱
  • 周至做网站展示型网站制作公司
  • 石排镇专业建站公司网站建设套餐方案
  • 淘宝上有做网站的吗企业网站模板php
  • 广安发展建设集团门户网站免费jsp源码分享网站
  • 站酷设计网站官网入口免费个人海报网站开发人员的水平
  • 和谐校园网站建设百度一下百度百科
  • 常州网站备案网站总是跳转dede58
  • led营销型网站建设报告范文
  • 做dnf辅助官方网站网站进不去怎么解决
  • 网站的改版怎么做wordpress主题模版在那个文件夹
  • 有了源代码怎么做网站东莞横沥新闻今天
  • 网站策划的前景杭州网站建设公司联系方式
  • 学校响应式网站模板下载福田网站建设多少钱
  • php面向对象网站开发给人做设计的网站