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

企业网站代码模板老版51个人空间找照片

企业网站代码模板,老版51个人空间找照片,微信小程 wordpress,网络营销的基本内容有哪些文章目录 反例应用对象池对象池应用 享元模式(flyweight)是一种进行性能优化的模式,通过共享技术来支持大量细粒度的对象 如果系统中创建了大量相似的对象,我们就可以通过享元模式节省内存 反例 服装厂生产了一堆衣服&#xff…

文章目录

    • 反例
    • 应用
    • 对象池
    • 对象池应用

享元模式(flyweight)是一种进行性能优化的模式,通过共享技术来支持大量细粒度的对象

如果系统中创建了大量相似的对象,我们就可以通过享元模式节省内存

反例

服装厂生产了一堆衣服,需要模特拍照片,假设有 100 个衣服被生产,就 new 了 100 个模特出来给衣服拍照片,显然内存要爆炸

这时我们把模特抽象出来,通过 更新他身上的衣服执行拍照方法,就避免了过多的内存消耗,这个步骤将对象的属性划分成了内部状态和外部状态,每个对象都有拍照这个内部属性,穿的衣服、性别都是外部属性,减少了共享对象的数量~

  • 内部状态 存储在对象内部
  • 内部状态 可以被一些对象共享
  • 内部状态 独立于场景,一般不会改变
  • 外部状态 取决于场景,根据场景变化

虽然修改外部状态也需要花费一定时间,但总比新建一个对象要好,所以这是一种时间换空间的优化方式,上面的例子中,衣服就是外部属性,拍照就是内部属性~

应用

上面的修改是基于享元模式的一个小改动,完整的享元模式还应该包含一个享元模式对象工厂,下面是 Unity 中一个常见的情景

正常来说我们用 new 创建 100 个粒子,性能可能不受影响,但 10000 个有可能就得爆炸了!

看下面的代码理解享元模式的好处在哪:

using System;
using System.Collections.Generic;// 享元接口
interface IParticle
{void Move(int x, int y);void Draw();
}// 具体享元类
class Particle : IParticle
{private string color;public Particle(string color){this.color = color;}public void Move(int x, int y){Console.WriteLine($"Moving particle to ({x}, {y})");}public void Draw(){Console.WriteLine($"Drawing particle with color: {color}");}
}// 享元工厂类
class ParticleFactory
{private Dictionary<string, IParticle> particles = new Dictionary<string, IParticle>();public IParticle GetParticle(string color){if (particles.ContainsKey(color)){return particles[color];}else{IParticle particle = new Particle(color);particles.Add(color, particle);return particle;}}
}// 游戏场景类
class GameScene
{private ParticleFactory particleFactory = new ParticleFactory();private List<IParticle> particles = new List<IParticle>();public void AddParticle(string color, int x, int y){IParticle particle = particleFactory.GetParticle(color);particle.Move(x, y);particles.Add(particle);}public void RenderScene(){foreach (var particle in particles){particle.Draw();}}
}// 测试
class Program
{static void Main(string[] args){GameScene scene = new GameScene();// 添加红色粒子到不同位置scene.AddParticle("red", 10, 20);scene.AddParticle("red", 30, 40);scene.AddParticle("red", 50, 60);// 添加蓝色粒子到不同位置scene.AddParticle("blue", 70, 80);scene.AddParticle("blue", 90, 100);// 渲染场景scene.RenderScene();}
}

对象池

对象池 维护一个 装有空闲对象 的池子,如果需要对象的时候,不是直接 new,而是从对象池里获取,如果池里没有则创建一个新的

原理很好理解,我们班人手买一本 C++ Primer Plus 可能不是那么划算,大部分时间都是闲置的,如果我们创建一个池,需要看的就去拿,看完了就还回来,不够了马上从图书馆借一本出来,这就很节约了

HTTP 连接数据库连接池 都是对象池技术的应用

对象池应用

我们举个例子,某某地图 APP 上有很多个标记 ABCDEFG,如果我们搜索兰州拉面,就会弹出来 4 个附近的兰州拉面标记,这时候如果我们换个地方搜索,弹出来了 6 个兰州拉面标记:

  • 销毁前面的兰州拉面标记重新创建
  • 利用对象池技术,前面的 4 个标记放回池里,再创建 2 个出来用

再看看上面 Unity 的例子,是否能理解为什么 享元模式 & 对象池技术在特殊的场景下是优秀的

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

相关文章:

  • 怎么做网站和艺龙对接如何建设物流网站
  • 福州市建网站公司手机网站用二级目录做的弊端
  • wordpress幻灯片郑州seo代理外包公司
  • 小说网站排名苏州企业网站制作电话
  • 龙港哪里有做阿里巴巴网站做网站程序的都不关注seo
  • dede古典网站模板医院诊所响应式网站模板
  • 公司网站 百度本地房产交易信息网
  • php做用户注册网站最有效的100个营销方法
  • 湖南建设人力资源官方网站滨海新网站建设
  • 网站建网站建设seo帮帮您广州建设行业信息网站
  • 替网站做任务怎么做的智慧团建网页版官网
  • 做英德红茶的网站制作一个网站的一般步骤
  • 免费做封面的网站wordpress多域名插件
  • 莱芜做网站的商家有哪些泰安千橙网络有限公司
  • 翔安区建设局网站个人如何做购物网站 关于支付接口
  • 云南建设学校网站登陆佛山企业网站多少钱
  • 如何给网站做引流wordpress 客户端
  • 域名绑定空间后 一般多久能打开网站网站需求分析报告
  • 怎么更改网站里的tdk旧电脑做php网站服务器
  • 怎么做网站排名会更好建设网站过程第一阶段
  • 广饶网站设计近一周新闻热点事件
  • 教人如何做吃的网站遂宁建设局网站首页
  • 网页设计国外设计欣赏网站手机本地图片生成链接
  • 建网站中企动力优广州黄埔做网站的公司哪家好
  • 好的网页设计网站照明做外贸的有那些网站
  • 基于工作过程的商务网站建设:网页制作昆明培训网站建设
  • 手游网站建设的宗旨昆山网站开发的公司
  • 下列不属于网站开发技术的是网站ome系统怎么做
  • 排名好的郑州网站建设wordpress 文章自动标签
  • 网站认证值不值得做郑州网站建设大华伟业