C++大作业--单件类(Singleton)的实现

单件类的实现

/******************************************** 
 * CopyRight 2007 北京交通大学
 * 程序名称: 单件类 
 * 文件名: main.cpp 
 * 修改日期: 2007-4-7 19:56:09 
 * 描述: 设计模式中的单件类的简单实现 
 * ********************************************/
#include <iostream>
#include "conio.h"
using namespace std;
class Singleton
{
public:
    static Singleton *Getinstance()
    {
        if (p != NULL)
        {
            cout << "已经创建过了单件类,无法二次创建!" << endl;
            return p;
        }
        else
        {
            cout << "系统未创建过单件类,为单件类分配内存" << endl;
            p = new Singleton;
            return p;
        }
    }
    static Singleton *Free()
    {
        if (p != NULL)
        {
            delete p;
            p = NULL;
            return NULL;
        }
        else
            return NULL;
        cout << "释放单件类.." << endl;
    }
    static ShowInstance() { cout << "类内返回的单件类地址:" << p << endl; }

private:
    static Singleton *p;
    Singleton(){};
    ~Singleton(){};
};
Singleton *Singleton::p = NULL;
int main()
{
    cout << "\n单件类测试 \n\n";
    class Singleton *p = NULL;
    cout << "创建前:\n程序获取单件类地址:" << p << endl;
    Singleton::ShowInstance();
    cout << "\n创建:" << endl;
    p = Singleton::Getinstance();
    Singleton::ShowInstance();
    cout << "程序获取的单件类地址:" << p << endl;
    cout << "\n二次创建试验:\n";
    Singleton::Getinstance();
    p = Singleton::Free();
    cout << "\n释放后:\n单件类地址" << p << endl;
    Singleton::ShowInstance();
    cout << "\n按任意键退出.";
    getch();
    return 0;
}

 

 

Leave a Reply

Your email address will not be published. Required fields are marked *