本文介绍了GoF中的蝇量模式。
模式推演
当需要非常多的同类对象时:
在游戏里面,经常需要渲染非常多的对象,例如树,一个场景可能有非常多的树:
如果每棵树新建一个对象,那么成千上万的树对象会占用大量的内存空间,导致游戏变卡顿,需要优化。
优化内存
优化的思路为:由于我们只是要渲染树,可以只创建一个数对象,然后利用这个树对象进行重复的渲染,而不是创建非常多的树对象。
定义
蝇量模式(Flyweight Pattern):让某个类的一个实例能用于提供很多“虚拟实例”。
用途:
- 当一个类有很多的实例,而这些实例能被同一个方法控制时,我们就可以使用蝇量模式。
优点:
- 减少运行时对象实例的个数,节省内存;
- 将许多“虚拟”对象的状态集中管理。
缺点:
- 单个的逻辑实例将无法用户独立而不同的行为。