0x00 单例模式之懒汉式
#include <iostream>
using namespace std;
class Singelton
{
private:
Singelton(){
cout << "构造函数执行!" << endl;
}
public:
static Singelton * Instance()
{
if(m_psl == NULL){
m_psl = new Singelton;
return m_psl;
}
return m_psl;
}
static Singelton * FreeInstance()
{
if(m_psl != NULL){
delete m_psl;
m_psl = NULL;
}
}
private:
static Singelton * m_psl;
};
Singelton * Singelton::m_psl = NULL;
int main()
{
Singelton * sin1;
Singelton * sin2;
sin1 = Singelton::Instance();
sin2 = Singelton::Instance();
if(sin1 == sin2){
cout << "懒汉式!" << endl;
}
Singelton::FreeInstance();
return 0;
}
0x01 单例模式之饿汉式
#include <iostream>
using namespace std;
class Singelton
{
privite:
Singelton(){
cout << "构造函数!" << endl;
}
public:
static Singelton * Instance(){
return m_psl;
}
static Singelton * FreeInstance(){
if(m_psl != NULL){
delete m_psl;
m_psl = NULL;
}
}
private:
static Singelton * m_psl;
};
Singelton * Singelton::m_psl = new Singelton;
int main()
{
Singelton * p1 = Singelton::Instance();
Singelton * p2 = Singelton::Instance();
if(p1 == p2){
cout << "饿汉式" << endl;
}
return 0;
}