您的位置:首页 > 编程语言 > C语言/C++

学习笔记:关注C++设计模式之Singleton模式

2011-10-18 20:05 495 查看
#ifndefSINGLETON_H
#defineSINGLETON_H

classSingleton
{
public:
staticSingleton*Instance();
protected:
Singleton();
private:
staticSingleton*_instance;
};

#endif//SINGLETON_H
#include"Singleton.h"#include<iostream>

usingnamespacestd;


Singleton*Singleton::_instance=0;//定义一个指针,如果先不用就要把它赋给0,

//不然有可能会随意指向内存,造成程序崩溃。

Singleton::Singleton()

{

cout<<"Singleton...."<<endl;

}

Singleton*Singleton::Instance()

{

if(_instance==0)

{

_instance=newSingleton();

}

return_instance;

}





#include"Singleton.h"#include<iostream>
usingnamespacestd;
intmain(intargc,char*argv[])
{
Singleton*sgn=Singleton::Instance();
return0;
}




Singleton不可以被实例化,因此我们将其构造函数声明为protected或者直接声明为private。

这个模式主要是处理一些单线程问题。

Singleton模式经常和Factory(AbstractFactory)模式在一起使用,因为系统中工厂对象一般来说只要一个。

一、
Singleton模式的作用


Singleton模式提供了一个全局唯一访问类的方法,它在整个程序中只有一个实例,不允许出现多个。作用类似于全局变量。但是全局变量的类型依然可以实例化多个对象,从而不能保证唯一性,所以必须采用Singleton模式。

程序中经常将某种管理类,以Singleton模式实现,比如资源管理、路径服务、网络访问处理,这些在整个程序中都应该只有一个实例。

二、
Singleton模式的要点


要点1:Singleton类的构造函数必须是非Public的(及Private或Protected),
从而避免外部实例化该对象;

要点2:自己实例化自己;

要点3:Singleton类必须提供一个访问自己的接口(靠static声明的函数访问);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: