图形学优化_3: ogre设计模式_Singleton(单例模式)
来源:互联网 发布:r语言导入数据 编辑:程序博客网 时间:2024/04/28 22:31
http://blog.csdn.net/wuzhekai1985/article/details/6665869
- 由于构造函数是私有的,因此无法通过构造函数实例化,唯一的方法就是通过调用静态函数GetInstance
//Singleton.h class Singleton { public: static Singleton* GetInstance(); private: Singleton() {} static Singleton *singleton; }; //Singleton.cpp Singleton* Singleton::singleton = NULL; Singleton* Singleton::GetInstance() { if(singleton == NULL) singleton = new Singleton(); return singleton; }
Singleton类的子类
//Singleton.h#pragma once#include <iostream>using namespace std;class Singleton {public: static Singleton* GetInstance(const char* name); virtual void Show() {}protected: //必须为保护,如果是私有属性,子类无法访问父类的构造函数 Singleton() {}private: static Singleton *singleton; //唯一实例的指针};//Singleton.cpp#include "Singleton.h"#include "SingletonA.h"#include "SingletonB.h"Singleton* Singleton::singleton = NULL;Singleton* Singleton::GetInstance(const char* name){ if(singleton == NULL) { if(strcmp(name, "SingletonA") == 0) singleton = new SingletonA(); else if(strcmp(name,"SingletonB") == 0) singleton = new SingletonB(); else singleton = new Singleton(); } return singleton;}
//SingletonA.h#pragma once#include "Singleton.h"class SingletonA: public Singleton{ friend class Singleton; //必须为友元类,否则父类无法访问子类的构造函数public: void Show() { cout<<"SingletonA"<<endl; }private: //为保护属性,这样外界无法通过构造函数进行实例化 SingletonA() {} };//SingletonB.h#pragma once#include "Singleton.h"class SingletonB: public Singleton{ friend class Singleton; //必须为友元类,否则父类无法访问子类的构造函数public: void Show(){ cout<<"SingletonB"<<endl; }private: //为保护属性,这样外界无法通过构造函数进行实例化 SingletonB() {}};
#include "Singleton.h"int main(){ Singleton *st = Singleton::GetInstance("SingletonA"); st->Show(); return 0;}
多线程
- 多线程情况下加锁(lock)
0 0
- 图形学优化_3: ogre设计模式_Singleton(单例模式)
- 图形学优化_3: ogre设计模式_adpter模式(适配器模式)
- 图形学优化_3: ogre设计模式_Factory Method (工厂方法模式)
- 设计模式——单例模式_Singleton Pattern
- 设计模式学习_Singleton
- java设计模式进阶_singleton
- 图形学优化_3: 责任链模式和迭代器模式
- 图形学优化_3: 观察者模式和模板方法模式
- 图形学优化_3: bridge(桥接模式)和proxy(代理)
- 黑马程序员_Singleton模式(单例模式)饿汉式和懒汉式
- 设计优化(1)单例模式
- 【设计模式】单例模式优化
- Boolan 设计模式_3
- java程序性能优化之设计优化--设计模式:单例模式(1)
- 【设计优化】- 正确使用单例模式
- 设计模式(单例设计模式)
- 设计模式(单例设计模式)
- Ogre的设计模式分析之-单件模式
- TabHost的使用理解
- .Net 应用中使用dot trace进行性能诊断
- linux命令学习(3)
- smarty中调用php内置函数
- 汇编语 编写子程序的问题和统计一个字符串的问题
- 图形学优化_3: ogre设计模式_Singleton(单例模式)
- Microsoft.XMLHTTP入门
- Android Toast显示不出来
- online_judge_1132
- linux串口查看命令
- js window.onload 加载多个函数和追加函数
- Linux网络基础
- 如何优化Android studio的启动速度
- java中递归调用的实例