创建型模式-Singleton

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值