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

单件类的实现 main.cpp

/********************************************
  CopyRight 2007 北京交通大学 计科0601 李赫元
  程序名称:  单件类
  文件名:    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单件类测试 计科0601 李赫元 06281010\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.