`

四种方法实现单件(Singleton)模式

 
阅读更多

单件模式确保一个类只有有一个实例,并提供一个全局访问点。

总之 就是说,在这个类的生命周期中只有能产生一个实例,那么 如何 来控制这一切呢。首先,如果一个类的constructor不是private的,那么客户端的代码就可以随意 的创建类的实例,这样肯定是不能保证一个类只有一个实例的,唯一的方法就是保证这个类的构造函数为私有。

那么,如果类的构造函数为私有了,也就是说客户端无法创建类的实例了,它们怎么得到这个类的实例呢,因为不能通过构造函数或者实例来获得这个类的实例 ,所以我们提供一个公有的静态方法来提供类的这个唯一的实例 。

还有。在这过程 中我们应该考虑多线程的问题。

好了,上代码。


方法一:采用急切初始化的方法


方法二:采用同步方法


法三:采用静态嵌套类,这样做是为了解决急切初始化所带来 的问题。比如说这个对象很大,占有很多资源 ,如果创建了不用,那就是一个巨大的浪费 。所以我们用下面的方法,在需要的时候再创建此类的实例。


方法四:先检查是不是已经产生了此类的实例 ,如果 没有再加锁


还有人说为什么不把那个静态变量直接 设为public,大家想想,如果客户端这样设置:Singleton.instance=null; 那么其它线程获取到的就会是null,这显然 不是我们想要的。~~


9.13 by KevinJom


分享到:
评论

相关推荐

    Head First 设计模式 (五) 单件模式(Singleton pattern) C++实现

    Head First 设计模式 (五) 单件模式(Singleton pattern) C++实现

    五种单件模式之Singleton的实现方法详解

    本篇文章是对Singleton的实现方法进行了详细的分析介绍,需要的朋友参考下

    Python下singleton模式的实现方法

    Python 中常见的方法是借助 global 变量,或者 class 变量来实现单件。本文就介绍以decorator来实现 singleton 模式的方法。示例代码如下: ##----------------------- code begin ----------------------- # -*- ...

    设计模式 之 单件模式

    不变的部分,就构成了模式,因此,模式是一个经验提取的“准则”,并且在一次一次的实践中得到验证,在不同的层次有不同的模式,小到语言实现,大到架构。在不同的层面上,模式提供不同层面的指导。

    C#实现单件模式的三种常用方法

    本文实例讲述了C#实现单件模式的三种常用方法。分享给大家供大家参考。具体分析如下: 单件模式是一种设计模式,即保持同时只能创建一个实例,下面列出了C#实现单件模式的三种方法 方法1 public sealed Class ...

    c#单例模式(Singleton)的6种实现

    单件模式(Singleton):保证一个类仅有一个实例,并提供一个访问它的全局访问点。 1.1.2 正文 图1单例模式(Singleton)结构图 单例模式(Singleton)是几个创建模式中最对立的一个,它的主要特点不是根据用户程序...

    C++设计模式(Design Pattern)范例源代码

    23种设计模式(Design Pattern)的C++实现范例,包括下面列出的各种模式,代码包含较详细注释。另外附上“设计模式迷你手册.chm” 供参考。 注:项目在 VS2008 下使用。 创建型: 抽象工厂模式(Abstract Factory) ...

    设计模式整理(很全)

    创建模式 设计模式之Singleton(单态/单件) 阎宏博士讲解:单例(Singleton)模式 保证一个类只有一个实例,并提供一个访问它的全局访问点 设计模式之Factory(工厂方法和抽象工厂) 使用工厂模式就象使用new一样频繁....

    浅析软件项目开发中的单件模式

    火龙果软件工程技术中心 前言单件(Singleton)模式作为设计模式的一个典型且相对简单的构造型模式,已经在很多项目的实际开发中被广泛采用,由于其所有相关操作都是基于同一个实例的引用,因此单件模式的使用主要...

    设计模式,软件开发者必读

    2.1.7 SINGLETON模式扩展 16 2.2 FACTORY METHOD工厂方法模式 17 2.2.1 简单工厂 17 2.2.2 工厂方法 18 2.3 ABSTRACT FACTORY 抽象工厂模式 22 2.4 BUILDER PATTERN 生成器模式 25 2.5 PROTOTYPE 原型模式 28 结构型...

    单件模式的C++实现

     Singleton模式的实现基于两个要点:  1)不直接用类的构造函数,而另外提供一个Public的静态方法来构造类的实例。通常这个方法取名为Instance。Public保证了它的全局可见性,静态方法保证了不会创建出多余的...

    Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides23种设计模式

    3.5 Singleton(单件)—对象创建型 模式 84 3.6 创建型模式的讨论 89 第4章 结构型模式 91 4.1 Adapter(适配器)—类对象结构型 模式 92 4.2 Bridge(桥接)—对象结构型 模式 100 4.3 Composite(组成)—对象...

    二十三种设计模式【PDF版】

    设计模式之 Singleton(单态/单件) 阎宏博士讲解:单例(Singleton)模式 保证一个类只有一个实例,并提供一个访问它的全局访问点 设计模式之 Factory(工厂方法和抽象工厂) 使用工厂模式就象使用 new 一样频繁. ...

    设计模式--C++

    3.5 Singleton(单件)—对象创建型模式 84 3.6 创建型模式的讨论 89 第 4 章 结构型模式 91 4.1 Adapter(适配器)—类对象结构型模式 92 4.2 Bridge(桥接)—对象结构型模式 100 4.3 Composite(组成)—对象结构...

    设计模式可复用面向对象软件的基础.zip

    3.5 Singleton(单件)—对象创建型 模式 84 3.6 创建型模式的讨论 89 第4章 结构型模式 91 4.1 Adapter(适配器)—类对象结构型 模式 92 4.2 Bridge(桥接)—对象结构型 模式 100 4.3 Composite(组成)—对象...

    设计模式(.PDF)

    3.5 Singleton(单件)—对象创建型 模式 84 3.6 创建型模式的讨论 89 第4章 结构型模式 91 4.1 Adapter(适配器)—类对象结构型 模式 92 4.2 Bridge(桥接)—对象结构型 模式 100 4.3 Composite(组成)—对象...

    GOLF设计模式(C++语言版)

    3.5 Singleton(单件)—对象创建型 模式 84 3.6 创建型模式的讨论 89 第4章 结构型模式 91 4.1 Adapter(适配器)—类对象结构型 模式 92 4.2 Bridge(桥接)—对象结构型 模式 100 4.3 Composite(组成)...

    《设计模式》中文版(23个设计模式的介绍与运用)

    3.5 Singleton(单件)—对象创建型 模式 84 3.6 创建型模式的讨论 89 第4章 结构型模式 91 4.1 Adapter(适配器)—类对象结构型 模式 92 4.2 Bridge(桥接)—对象结构型 模式 100 4.3 Composite(组成)—对象...

Global site tag (gtag.js) - Google Analytics