设计模式系列(一)——单例
关于设计模式的讨论
单例模式是我的设计模式系列的开篇,使用有些关于设计模式的浅显理解也精简的一并说了。
面向对象分析和设计(OOA/D)的精要就是设计模式。设计模式之于面向对象系统的设计和开发的作用就有如数据结构之于面向过程开发的作用一般,介绍一本设计模式的圣经——GoF 的《设计模式: 可复用面向对象软件的基础》 。
面向对象系统的分析和设计实际上追求的就是两点, 一是高内聚(Cohesion) , 二是低耦合(Coupling) 。 这也是我们软件设计所准求的, 因此无论是 OO 中的封装、 继承、 多态,还是我们的设计模式的原则和实例都是在为了这两个目标努力着、贡献着。
单例(Singleton)
Singleton 模式解决问题十分常见, 我们怎样去创建一个唯一的变量(对象)?在基于对象的设计中我们可以通过创建一个全局变量(对象)来实现,在面对对象和面向过程结合的设计范式中,我们也还是可以通过一个全局变量实现这一点。
单例模式:我们是通过维护一个static的成员变量来记录这个唯一的对象实例。通过提供一个staitc的接口instance来获得这个唯一的实例。
//Singleton.h
#ifndef _SINGLETON_H_
#define _SINGLETON_H_
#include<iostream>
using namespace std;
class Singleton
{
public:
static Singleton* get_instance();
private:
static Singleton* instance;
Singleton();
~Singleton();
}
//Singleton.cpp
#include "Singleton.h"
Singleton* Singleton::instance = NULL;
Singleton::Singleton()
{
cout<<"Singleton..."<<endl;
}
Singleton* Singleton::get_instance();
{
if(instance == NULL)
{
instance = new Singleton();
}
return instance;
}
#include "Singleton.h"
int main(int argc,char** argv)
{
Singleton* sgn = Singleton::get_instance();
return 0;
}
Singleton 模式在开发中经常用到, 且不说我们开发过程中一些变量必须是唯一的,比如说打印机的实例等等。