常用设计模式之单例模式

原创 2017年06月21日 21:12:36

单例模式:用来创建独一无二的,只能够有一个实例的对象。
单例模式的应用场景:有一些对象其实只需要一个,比如:线程池,缓存,对话框,处理偏好设置和注册表的对象,日志对象,充当打印机,显卡等设备的驱动程序对象。这些对象只能够拥有一个实例,如果创建出了多个实例,就会导致一些程序的问题。程序的行为异常,资源使用的过量,或者导致不一致的结果。常用来管理共享的资源,比如数据库的连接或者线程池。

Singleton经典结构为:
Singleton经典结构
我们通过维护一个static的成员来记录这个唯一的对象实例。通过提供一个static的接口instance来获得这个唯一的实例。

//Singleton.h
#ifndef _SINGLETON_H_
#define _SINGLETON_H_

#include <iostream>
using namespace std;

class Singleton
{
public:
    static Singleton* Instance();

//Singleton不可以被实例化,因此我们将其构造函数声明为protected,或者private。
protected:
    Singleton();

private:
    static Singleton* _instance;
};

#endif
//Singleton.cpp
#include "Singleton.h"
#include <iostream>
using namespace std;

Singleton *Singleton::_instance = 0;

Singleton::Singleton()
{
    cout << "Singleton..." << endl;
}

Singleton *Singleton::Instance()
{
    if (0==_instance)
    {
        _instance = new Singleton();
    }
    return _instance;
}
//Main.cpp
#include "Singleton.h"
#include <iostream>
using namespace std;

int main(int argc, char* argv[])
{
    Singleton *sgn = Singleton::Instance();

    system("pause");
    return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

Android面试设计模式之单例模式

在面试的时候面试官会问我们常用的一些设计模式,这里先介绍一下单例模式。 为什么要使用单例模式 1.控制资源的使用,通过线程同步来控制资源的并发访问; 2.控制实例产生的数量,达到节约系统资源; 3...
  • qq_435559203
  • qq_435559203
  • 2016年09月12日 18:25
  • 580

设计模式之——单例模式(Singleton)的实现、优缺点和常见应用场景

一.单例模式的三种实现 以及各自的优缺点 转载自http://my.oschina.net/suyewanwan/blog/102525 单例模式:单例模式的意思就是只有一个实例。单例模式确保某...
  • qq_30465427
  • qq_30465427
  • 2015年08月09日 15:36
  • 1200

大话设计模式——单例模式

宏观导图 细节展示  单例模式的结构图: 关键代码:  在GetInstance方法中,要加入判断。 if (instance==null) { instance=new Single...
  • u011500356
  • u011500356
  • 2015年01月05日 21:44
  • 1464

java 单例设计模式使用场景

单例设计模式的使用场景说明,优缺点,在线程中该使用那种方式的单例,其中涉及到类在JVM中的分配......
  • bob_Xing_Yang
  • bob_Xing_Yang
  • 2017年05月23日 10:53
  • 382

单例模式及常见写法分析(设计模式01)

保证一个类仅有一个实例,并提供一个该实例的全局访问点。 ——《设计模式》单例模式的概念很简单,下面以C#语言为例子,列出常见单例写法的优缺点。1、简单实现 public sea...
  • xunzaosiyecao
  • xunzaosiyecao
  • 2016年03月12日 19:59
  • 7243

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

一、简单介绍 单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例。 《设计模式》书中对单例模式动机的介绍 对于系统中的某些类...
  • robertcpp
  • robertcpp
  • 2016年06月05日 11:00
  • 2229

代理模式,简单(静态)工厂模式,单例模式,模板方法模式个人理解

简言:java中总共有23种设计模式,每个模式的出现都是为了解决某一方面的问题,所以这23种设计模式有他们各自适用的地方(废话有点多),而设计模式的产生主要是为了降低类与类之间的耦合度。下面我们就简单...
  • u013825231
  • u013825231
  • 2016年07月21日 19:53
  • 925

Java设计模式菜鸟系列(六)单例模式建模与实现

单例模式保证了一个类只有一个实例,且提供一个访问全局点的方式,更加灵活的保证了实例的创建和访问约束。系统中只有一个实例,因此构造方法应该为私有 饿汉式:类加载时直接创建静态实例;懒汉式:第一次需要时才...
  • JAVE_LOVER
  • JAVE_LOVER
  • 2014年10月05日 00:44
  • 2502

通俗易懂设计模式系列--白话设计模式

抽空有整理了一下设计模式,用自己的话总结了一下,自认为通俗易懂。 简单工厂模式: 包括三种角色,抽象产品、具体产品和工厂角色。其中在工厂直接完成对具体产品的创建。工厂模式的好处是需要创建对象的时候只需...
  • u011630100
  • u011630100
  • 2014年03月29日 18:55
  • 1599

设计模式之禅——门面模式

门面模式【Facade Pattern】也叫外观模式,是一种比较常用的封装模式,其定义如下:【要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行。门面模式提供一个高层次的接口,使得子系统更容...
  • TyroneRenekton
  • TyroneRenekton
  • 2017年01月11日 10:30
  • 1196
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:常用设计模式之单例模式
举报原因:
原因补充:

(最多只允许输入30个字)