技术交流

TECHNICAL EXCHANGES

【技术分享】“资源对象”,“实例对象”与禁止使用Singleton单键模式
正确认识和使用“资源对象”与“实例对象”
    游戏软件处理的对象,一般分“资源对象”与“实例对象”。
“资源对象”:在程序运行时,储存一种游戏资源的数据。这个对象内的数据用于游戏程序中的渲染,声音播放等。一般而言,资源对象内的资源数据在程序运行时很少变动。比如贴图,3D网格,音频数据等。资源数据往往比较占内存空间。 资源对象可以被多个“实例对象”所共享。以节约内存。
“实例对象”:代表游戏世界中的任意类型的实体。这个实体有自己的一些属性。并且在游戏时经常会变动。实例对象内部含有一个其共享的“资源对象”的索引(指针)。例如:如果一个游戏世界中有大量相同外形的树木。而树木的摆放位置,旋转角度不一样。那么树木这个对象本身是“实例对象”,这个实例对象需要索引到一个储存树木绘制需要的资源对象(3D网格,贴图,材质等)。

禁止使用Singleton
   不得使用《设计模式》中介绍的“Singleton" 单键模式。
   原因:对于大型复杂软件开发,软件中对象的初始化顺序和销毁顺序非常重要。单键对象的初始化,有时是在第一次使用此单键类对象的时候才进行。对单键对象的销毁,有可能由于不同人写的代码段使用了单键,造成销毁后又重新初始化。由于项目都是多人并行开发,对于所有单键类的对象初始化与销毁,必须有一个统一可控的初始化顺序。而每个人自行使用Singleton模式,造成这些对象的初始化顺序与销毁不可控。不同人写的单键类散布在大型软件工程项目的每一个地方。没有一个地方统一控制它们的初始化顺序和销毁顺序。 同时,对单键类的“全局唯一”假设不成立。比如用到N个机器人时。
Copyright © 2005-2016 Yonghang Technology. All Rights Reserved   
京ICP备09024877号 京公网安备11010102000822号.