美文网首页
设计模式——04创建型.单例模式

设计模式——04创建型.单例模式

作者: Lv1_Sans | 来源:发表于2017-04-05 19:49 被阅读0次

单例模式定义:保证一个类仅有一个实例,并提供一个访问它的全局访问点。

所有类都有构造方法,不编码则系统默认生成空的构造方法,若有显示定义的构造方法,默认的构造方法就会失效。

通常我们可以让一个全局变量使得一个对象被访问,但它不能防止你实例化多个对象,一个最好的办法就是,让类自身负责保存它的唯一实例,这个类可以保证,没有其他实例可以被创建,并且它可以提供一个访问该实例的方法。

单例模式因为Singleton类封装它的唯一实例,这样它可以严格地控制客户怎样访问它以及何时访问它。简单地说就是对唯一实例的受控访问。

单例模式(Singleton)结构图


Singleton结构图

Singleton类,定义一个GetInstance操作,允许客户访问它的唯一实例,GetInstance是一个静态方法,主要负责创建自己的唯一实例。

1.懒汉模式(线程不安全)


懒汉模式(线程不安全)

申明了一个静态对象,在用户第一次调用时初始化;

虽然节约了资源,但是第一次加载时需要实例化,反应稍慢,而且多线程时不能正常工作;

2.懒汉模式(线程安全)


懒汉模式(线程安全)

lock:确保当一个线程位于代码的临界区时,另一个线程不进入临界区。

可以在多线程中工作,但是每次调用GetInstance方法时都需要进行同步,造成不必要的同步开销,而且大部分时候我们是用不到同步的,所以不建议用这种模式。

3.双重锁定

双重锁定

这种方式采用双锁机制,安全且在多线程情况下能保持高性能。

4.静态初始化

静态初始化

C#与公共语言运行库也提供了一种“静态初始化”方法,这种方法不需要开发人员显示地编写线程安全代码,即可解决多线程环境下它是不安全的问题。

这种静态初始化的方式是在自己被加载时就将自己实例化,所以被形象地称之为饿汉式单例类。

相关文章

  • 单例模式

    单例 单例模式,是一种设计模式,属于创建型设计模式,还有一种创建型设计模式,工厂模式。设计模式总共有23种,三大类...

  • 开发之设计模式-单例模式

    设计模式 设计模式分为三大类:创建型、结构型、行为型在Java中有24中设计模式 创建型:单例 1、为什么用单例模...

  • 设计模式分类

    经典23种设计模式: 创建型设计模式: Singleton Pattern(单例模式) PrototypePatt...

  • Python 之单例模式

    简介:单例模式(Singleton Pattern) 是最简单的设计模式之一,属于创建型的设计模式。单例模式涉及到...

  • “Python的单例模式有四种写法,你知道么?”——孔乙己

    什么是单例模式 单例模式(Singleton Pattern)是最简单的设计模式之一。这种类型的设计模式属于创建型...

  • S4. 单例模式

    单例模式(Singleton) 介绍 单例模式是创建型设计模式,即用于创建对象的设计。其能够保证当前系统仅存在一个...

  • 设计模式简单总结(待完善)

    设计模式简单总结 设计模式可以分为:创建型,结构型,行为型三种模式。 1 创建型模式 1.1 单例模式 用来指定某...

  • PHP设计模式—创建型设计模式

    ** 创建型设计模式 **: 单例模式(Singleton Pattern) 工厂方法模式(Factor Patt...

  • 【设计模式】创建型设计模式汇总

    创建型设计模式汇总 1. 单例模式 1.1 单例模式的定义 一个类只允许创建一个对象或实例。 1.2 单例模式的作...

  • 23种设计模式学习总结

    创建型设计模式 主要解决对象的创建问题,封装复杂的创建过程,解耦对象的创建代码合使用代码。 单例模式 单例模式用来...

网友评论

      本文标题:设计模式——04创建型.单例模式

      本文链接:https://www.haomeiwen.com/subject/eeuxattx.html