设计模式之 享元模式 Flyweight

别名:缓存

目的

享元模式是一种结构型设计模式,它通过在多个对象之间共享状态的公共部分,而不是将所有数据保存在每个对象中,从而让你能够在可用的内存中容纳更多的对象。


问题

为了在长时间工作后放松一下,你决定开发一款简单的视频游戏:玩家可以在地图上移动并互相射击。你选择实现一个逼真的粒子系统,并将其作为游戏的独特特色。大量的子弹、导弹和爆炸产生的弹片将在地图上飞舞,为玩家带来惊险的体验。

完成游戏后,你推送了最后一次提交,构建了游戏,并将其发送给朋友进行测试。尽管游戏在你的电脑上运行完美,但你的朋友无法长时间游玩。在他的电脑上,游戏在几分钟后就会崩溃。在花了几个小时查看调试日志后,你发现游戏崩溃是因为内存不足。原来,你朋友的电脑比你自己的电脑要弱得多,这就是为什么问题在他的机器上迅速出现的原因。

实际问题是与你的粒子系统相关的。每个粒子,如子弹、导弹或弹片,都是由一个包含大量数据的单独对象表示的。在某个时刻,当玩家屏幕上的混乱达到高潮时,新创建的粒子不再适合剩余的内存,因此程序崩溃了。


解决方案

仔细检查`Particle`类时,你可能会注意到`color`(颜色)和`sprite`(精灵图)字段比其他字段占用更多的内存。更糟糕的是,这两个字段在所有粒子中存储了几

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值