学习笔记:关注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声明的函数访问);
相关文章推荐
- 设计模式C++学习笔记之三(Singleton单例模式)
- 设计模式C++学习笔记之三(Singleton单例模式)
- 设计模式C++学习笔记之三(Singleton单例模式)
- 设计模式C++学习笔记之三(Singleton单例模式)
- 设计模式C++学习笔记之六(Singleton单例模式)
- 设计模式C++学习笔记之三(Singleton单例模式)
- 设计模式C++学习笔记之三(Singleton单例模式)
- 学习笔记:关注C++设计模式之Factory模式
- 学习笔记:关注C++设计模式之AbstractFactory模式
- 设计模式C++学习笔记之三(Singleton单例模式)
- 设计模式C++学习笔记之十(Builder建造者模式)
- boolan——c++学习笔记之设计模式三
- C++设计模式学习笔记六:原型模式
- 设计模式C++学习笔记之四(Multition多例模式)
- 设计模式C++学习笔记之六(Facade门面模式)
- 设计模式C++学习笔记之十一(Bridge桥梁模式)
- 设计模式C++学习笔记之六(Facade门面模式)
- 设计模式C++学习笔记之十四(Iterator迭代器模式)
- 设计模式C++学习笔记之三(Singleton单例模式)
- 设计模式C++学习笔记之八(Adapter适配器模式)