创建型模式-Singleton

来源:互联网 发布:unreal engine 源码 编辑:程序博客网 时间:2024/05/17 06:34

//单例(件)模式
//定义:保证一个类仅有一个实例,并提供一个访问他的全局访问点
//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);
}

原创粉丝点击