单例模式(Singleton)-设计模式(五)

原创 2016年08月31日 10:59:34

单例模式我觉得就是唯一性,个人认为 Singleton 模式是设计模式中最为简单、最为常见、最容易实现,也是最应该熟悉和掌握的模式。
作用:保证一个类仅有一个实例, 并提供一个访问它的全局访问点。
解析:
Singleton 模式其实是对全局静态变量的一个取代策略,上面提到的Singleton 模式的两个作用在 C++中是通过如下的机制实现的:
1)仅有一个实例,提供一个类的静态成员变量,大家知道类的静态成员变量对于一个类的所有对象而言是惟一的
2)提供一个访问它的全局访问点,也就是提供对应的访问这个静态成员变量的静态成员函数,对类的所有对象而言也是惟一的.在 C++中, 可以直接使用类域进行访问而不必初始化一个类的对象.
Singleton 模式需要说明的是,Singleton 不可以被实例化,因此我们将其构造函数声明为 protected或者直接声明为 private。
如果一个项目中用到的singleton模式较多的话,一般会定义一个模板:

Template <typename T>
class Singleon
{
    //类的声明和实现
}
//需要用到Singleton的类
class Testpublic Singleton<Test>
{
    //类的声明
}

个人觉得Singleton模式的实现很简单,看个简单的实现吧。

 #include<iostream>

using namespace std;

class Singleton
{
    public:
        static Singleton* Instance()
        {
            if(_instance == 0)
            {
                _instance = new Singleton();
            }
            return _instance;
        }
    protected:
        Singleton()
        { 
            cout<<"Singleton..."<<endl; 
        }
    private:
        //静态成员变量,提供全局唯一的一个实例
        static Singleton* _instance;
};
//类的静态成员变量要在类体外进行定义
Singleton* Singleton::_instance = 0;
int main()
{
    Singleton* sgn = Singleton::Instance();
    return 0;
}

这里写图片描述
这里写图片描述

版权声明:本文为博主原创文章,转载时需声明出处。http://blog.csdn.net/tax10240809163com

设计模式(创建型)之单例模式(Singleton Pattern)

单例模式可能是23种设计模式中最简单的。应用也非常广泛,譬如Android中的数据库访问等操作都可以运用单例模式。核心概念: 确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称...
  • yanbober
  • yanbober
  • 2015年04月27日 16:50
  • 2671

C++设计模式5--单例模式Singleton--当前对象只有一个实例

很多情况下,我们在开发项目的过程中,都希望自己运行的某个部件只有一个实例, 比如我们天天用QT开发界面,QTCreate里帮助菜单下的关于Qt Create菜单,弹出来的关于对话框,在QTCreate...
  • gatieme
  • gatieme
  • 2014年01月08日 13:25
  • 21468

设计模式:单例模式(Singleton)

单例模式在23个设计模式中算得上是最简单的一个了,也行你会有异议,那就换成“最简单之一”,这样就严谨了很多。   单例模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点。   适用性:当类...
  • u013256816
  • u013256816
  • 2016年03月23日 21:37
  • 4934

浅谈JAVA设计模式之——单例模式(Singleton)

一、概述        保证一个类仅有一个实例,并提供一个访问它的全局访问点。 二、适用性      1.当类只能有一个实例而且客户可以从一个众所周知的访问点访问它时。      2.当这个唯一...
  • l1028386804
  • l1028386804
  • 2015年05月02日 17:50
  • 1087

C#设计模式——单例模式(Singleton)

一、引言 最近在设计模式的一些内容,主要的参考书籍是《Head First 设计模式》,同时在学习过程中也查看了很多博客园中关于设计模式的一些文章的,在这里记录下我的一些学习笔记,一是为了帮助我更深...
  • ycl295644
  • ycl295644
  • 2015年07月06日 08:53
  • 2123

[Java设计模式](一)怎样实现Singleton(单例)模式编程

单例模式是开发模式中最简单,最易于理解的一种模式。简单地说,它指的就是始终保持一个实例的意思。但是,Java的类是可以穿件多个实例的,那么,怎么实现呢? 顾名思义,单例模式就是只有一个实例。单例模式确...
  • u012942818
  • u012942818
  • 2015年03月30日 15:20
  • 1142

设计模式-单例模式(Singleton)各种写法和分析比较

介绍单例模式是设计模式中比较简单容易理解的。它的出现主要是: 保证一个类仅有一个实例,并提供一个访问它的全局访问点 其实就在系统运行期间中保证只有这么一个实例,并能够全局访问。应用场景就是当需要一...
  • Card361401376
  • Card361401376
  • 2016年05月07日 23:51
  • 3844

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

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

muduo:Singleton类,单例模式

#include #include #include // atexit #include template class Singleton : boost::noncopyable { p...
  • yvhqbat
  • yvhqbat
  • 2016年06月20日 23:06
  • 614

设计模式实例(Lua)笔记之三(Singleton单例模式)

1.描述: 这个模式是很有意思,而且比较简单,但是我还是要说因为它使用的是如此的广泛,如此的有人缘,单例就是单一、独苗的意思,那什么是独一份呢?你的思维是独一份,除此之外还有什么不能山寨的呢?我们举个...
  • my183100521
  • my183100521
  • 2015年08月20日 10:19
  • 1790
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:单例模式(Singleton)-设计模式(五)
举报原因:
原因补充:

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