//单例(件)模式
//定义:保证一个类仅有一个实例,并提供一个访问他的全局访问点
//1、一个类的产生是由类构造函数完成的 使其私有化 外部就不能直接实例类对象
//2、提供一个访问单例的静态方法
//常用:工厂(因为系统我们就只有一个工厂来创建对象就可以了)..打印机的实例..
//系统方法库..
//不变单例对象(构造私有化不可被继承 保护可被继承产生多态)
#include <stdio.h>
class Game_class{};
class Game_class1:public Game_class{};
class Game_class2:public Game_class{};
class Game_class3:public Game_class{};
class Game_class4:public Game_class{};
class Game_class5:public Game_class{};
class Singleton
{
Singleton()
{
printf("Singleton!\n");
}
static Singleton* _instance;//私有 通过Instance()得到
public:
//1.静态成员函数的地址可用普通函数指针储存,普通成员函数地址需要用 类成员函数指针来储存
static Singleton* Instance() //不静态的话虽然可以调用构造 但是这个函数永远没有机会调用(普通成员函数只能通过实例调用)
{
if(_instance == 0)
{
_instance = new Singleton();
}
return _instance;
}
//以下为工厂 这样整个游戏系统里面的类对象创建就都被工厂屏蔽了
Game_class* creat(int a)
{
if(a == 1)
return new Game_class1;
else if(a == 2)
return new Game_class2;
else if(a == 3)
return new Game_class3;
else
return 0;
}
};
Singleton* Singleton::_instance = 0;
void Single_test()
{
//Singleton* sgn; //无效指针
//Singleton* sgn = new Singleton;//new 不出
Singleton* sgn = Singleton::Instance();
sgn->creat(1);
}