Cocos2d—X游戏开发之单例设计模式
2013-08-09 14:30
351 查看
Cocos2d—X游戏开发中需要大量使用到单例,单例是在整个程序运行期间都实例化一次,并且其作用域是全局的的对象。相当与C++中的全局静态变量。如果在程序运行期间需要大量使用到某个数据,那么单例无疑是最好的选择,
C++中,若类的方法前加了static关键字,则该方法称为静态方法,反之为实例方法。静态方法为类所有,可以通过对象来使用,也可以通过类来使用。但一般提倡通过类名来使用,因为静态方法只要定义了类,不必建立类的实例就可使用。静态方法只能用类的静态成员。
现在来看下,我们经常使用到的单例,CCDirector::sharedDirector
//在.cpp文件里面定义并初始化静态对象为null
static CCDisplayLinkDirector *s_SharedDirector =
NULL;
CCDirector* CCDirector::sharedDirector(void)
{
//如果单例为null,那么就创建一个对象并初始化
if (!s_SharedDirector)
{
s_SharedDirector =
new CCDisplayLinkDirector();
s_SharedDirector->init();
}
return
s_SharedDirector;
}
这样,就可以在程序的的整个生命周期之中,始终存在并且只有一个CCDirector的实例,又叫对象。从内存上面分析,大量使用某个类,不用创建多个对象;从生命周期上面分析,在程序运行期间,都可以使用。这就是单例的优势所在。
C++中,若类的方法前加了static关键字,则该方法称为静态方法,反之为实例方法。静态方法为类所有,可以通过对象来使用,也可以通过类来使用。但一般提倡通过类名来使用,因为静态方法只要定义了类,不必建立类的实例就可使用。静态方法只能用类的静态成员。
现在来看下,我们经常使用到的单例,CCDirector::sharedDirector
//在.cpp文件里面定义并初始化静态对象为null
static CCDisplayLinkDirector *s_SharedDirector =
NULL;
CCDirector* CCDirector::sharedDirector(void)
{
//如果单例为null,那么就创建一个对象并初始化
if (!s_SharedDirector)
{
s_SharedDirector =
new CCDisplayLinkDirector();
s_SharedDirector->init();
}
return
s_SharedDirector;
}
这样,就可以在程序的的整个生命周期之中,始终存在并且只有一个CCDirector的实例,又叫对象。从内存上面分析,大量使用某个类,不用创建多个对象;从生命周期上面分析,在程序运行期间,都可以使用。这就是单例的优势所在。
相关文章推荐
- 游戏开发中常用的设计模式
- 卡牌策略游戏的开发流水线与设计模式
- 游戏开发中常用的的设计模式
- 游戏开发中常用的设计模式
- 游戏开发设计模式之命令模式(unity3d 示例实现)
- 游戏开发中的设计模式——2.外观模式
- 游戏开发中的ECS设计模式初探
- 游戏开发设计模式之命令模式(unity3d 示例实现)
- 游戏开发设计模式之子类沙盒模式(unity3d 示例实现)
- 游戏开发中常用的设计模式
- 游戏开发中常用的设计模式
- 设计模式在游戏开发中的应用
- 游戏开发设计模式之状态模式 & 有限状态机 & c#委托事件(unity3d 示例实现)
- 游戏开发设计模式之子类沙盒模式(unity3d 示例实现)
- 游戏开发中常用的设计模式
- 游戏开发中常用的设计模式
- 游戏开发中常用的设计模式
- 游戏开发中常用的设计模式
- 游戏开发设计模式之对象池模式(unity3d 示例实现)
- 游戏开发中常用的设计模式