关闭

Singleton(单实例)设计模式

472人阅读 评论(0) 收藏 举报
分类:

Singleton(单实例)设计模式

为什么要用Singleton设计模式?

  Singleton设计模式,确保了一个类只有一个实例化的对象,并且它是全局可访问的。在游戏设计中,你常常需要一个“管理者”对象来完成创建、删除和管理这些对象的工作。具有这个的一个实例是必要的,对它可以进行全局访问是方便的,因为许多其他对象需要访问它。

Singleton设计模式如何实现?

  有许多实现singleton的方法,我没有比较各种方法的优劣处,这里我们就用《游戏人工智能编程案例精粹》中的方法(因为比较权威,哈哈)。这里用一个静态的方法——Instance,返回一个指向这个类的一个静态实例。

实例代码:

//---------MyClass.h---------
#ifndef MY_SINGLETON
#define MY_SINGLETON

class MyClass
{
private:
	//数据成员
	int m_iNum;
	//构造函数是私有的,防止用户创建多个对象
	MyClass(){}
	//析构函数也应该是私有的,但有一些编译器不支持这样做,不行的话只能让它为公有的。这里我用的是VS2010没有问题
	~MyClass(){}
	MyClass& operator=(const MyClass &);
	MyClass(const MyClass&);
public:
	//方法
	int GetVal() const {return m_iNum;}
	static MyClass* Instance()
	{
		static MyClass instance;
		return &instance;
	}
};

#endif
#include "MyClass.h"
#define  MyCls MyClass::Instance()

int main()
{
	int num1 = MyClass::Instance()->GetVal();//成员变量和方法可以这样访问
	int num2 = MyCls->GetVal();//定义了宏替换这样使用更加方便
	return 0;
}


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:344246次
    • 积分:9118
    • 等级:
    • 排名:第2313名
    • 原创:576篇
    • 转载:43篇
    • 译文:1篇
    • 评论:66条
    博客专栏
    文章分类
    最新评论