设计模式系列(一)——单例

设计模式系列(一)——单例

关于设计模式的讨论

单例模式是我的设计模式系列的开篇,使用有些关于设计模式的浅显理解也精简的一并说了。

面向对象分析和设计(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 模式在开发中经常用到, 且不说我们开发过程中一些变量必须是唯一的,比如说打印机的实例等等。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值