享元
计算机世界中无穷无尽的可能,其本质都是由1和0两个“元”的组合变化而产生的。元,顾名思义,始也,有本初、根源的意思。“享元”则是共享元件的意思。享元模式的英文flyweight是轻量级的意思,这就意味着享元模式能使程序变得更加轻量化。当系统存在大量的对象,并且这些对象又具有相同的内部状态时,我们就可以用享元模式共享相同的元件对象,以避免对象泛滥造成资源浪费
游戏地图举例
在早期的RPG(角色扮演类)游戏中,为了营造出不同的环境氛围,游戏的地图系统可以绘制出各种各样的地貌特征,如河流、山川、草地、沙漠、荒原,以及人造的房屋、道路、围墙等。为了避免问题的复杂化,我们就以草原地图作为范例,如图2-2所示。
对于图2-2所示的游戏地图,如果我们加载一整张图片并显示在屏幕上,游戏场景的加载速度一定会比较慢,而且组装地图的灵活性也会大打折扣,后期主角的移动碰撞逻辑还要提前对碰撞点坐标进行标记,这种设计显然不够妥当。正如之前探讨过的马赛克,我们可以发现整张游戏地图都是由一个个小的单元图块组成的,其中除房屋比较大之外