您的位置:首页 > 移动开发 > Cocos引擎

Cocos2d-x常用设计模式——单例模式

2016-09-28 20:57 274 查看
一、UML图



注意:唯一一个私有静态数据成员,构造函数和析构函数声明为私有或保护成员,一个公有的获取单例实例的静态方法。

二、Cocos2d-x中经常使用的单例模式代码

#include <iostream>

class Singleton
{
public:
static Singleton* getInstance();

void Func();

private:
Singleton();
~Singleton();

static Singleton* m_pInstance;
};

Singleton::Singleton()
{
std::cout << "this is constructor." << std::endl;
}

Singleton::~Singleton()
{
std::cout << "this is destructor." << std::endl;
}

// 静态实例初始化
Singleton* Singleton::m_pInstance = NULL; // nullptr

Singleton* Singleton::getInstance()
{
if (!m_pInstance){
m_pInstance = new Singleton();// 切记不能将这行代码写在if语句的前面;否则每次获得新的实例(如果有其他数据成员,也都是初始的值,即使修改了这些数据成员),而不是唯一的实例。
return m_pInstance;
}

return m_pInstance;
}

void Singleton::Func()
{
std::cout << "this is a function that Cocos2d-x often definates." << std::endl;
}

void main()
{
Singleton::getInstance()->Func();// Director* director = Director::getInstance()->getVisiableSize();

std::cin.get();
}
执行结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: