`

设计模式之单例详解

 
阅读更多

        单例模式是一种常见的设计模式,我们也知道单例模式有如下几种实现形式:

     

        1.最简单的实现---饿汉式

            
         注:如上标红所示,写一个单例(不管什么形式),主要注意点如下几点:

            1.成员变量 single 要声明成静态的(static),因为需要在静态方法getInstance()中访问。

            2.构造方法要声明成私有,不然如何保证单例

            3.getInstance()要声明成 public static的;

 

         该种方式不存在线程安全的问题,其是线程安全的。

 

         2.性能优化(lazy load)——懒汉式

         

         上面的方式虽然简单,但是是基于classloader加载的,其在该类第一次加载进内存时就会初始化单例对象。这样,无论该对象是否被使用,都会创建一个single对象。

         为了解决这个问题,就有下如下的方式:

         

           但该单例是非线程安全的;因此,解决线程安全的问题也很简单,就是加锁,如下:

 

            3. 懒汉式——线程安全(1)

           
      
               
4. 懒汉式——线程安全(2):效率更高

              

 

           但是上面的单例都有其缺陷:当反序列化和使用java的反射机制时,单例无法得到保证,那么,解决该问题,我们可以使用Enum(枚举)。

 

           5枚举实现

           

            
这种方式是Effective Java作者Josh Bloch 提倡的方式,它不仅能避免多线程同步问题,而且还能防止反序列化和反射机制重新创建新的对象,不过,JDK1.5中才加入enum特性, 这种方式只能在1.5之后使用。

  • 大小: 14 KB
  • 大小: 15.8 KB
  • 大小: 19.7 KB
  • 大小: 21.4 KB
  • 大小: 10.9 KB
分享到:
评论

相关推荐

    设计模式之单例模式详解.pdf

    设计模式之单例模式详解 单例模式是一种常用的软件设计模式,其定义是单例对象的类只能允许一个实例存在。许多时候整个系统只需要拥有一个的全局对象,这样有利于我们协调系统整体的行为。 单例模式的实现主要是...

    java设计模式之单例模式详解

    Java设计模式之单例模式详解 一、单例模式概览 单例模式(Singleton Pattern)是面向对象设计模式中的一种,属于创建型模式。它确保一个类仅有一个实例,并提供一个全局访问点来访问该实例。单例模式的核心在于控制...

    C++设计模式-单例模式

    李建忠老师的设计模式-单例模式讲解,示例以C++编程语言呈现。

    Java设计模式-单例模式详解

    Java设计模式-单例模式详解 单例模式是 Java 设计模式中的一种常用的设计模式,旨在保证一个类仅有一个实例,并提供一个访问它的全局访问点。单例模式的目的是为了保证在一个进程中,某个类有且仅有一个实例。 ...

    深入理解JavaScript系列(25):设计模式之单例模式详解

    单例模式是软件开发中一种非常重要的设计模式,它确保一个类只有一个实例,并提供一个全局访问点。在JavaScript这样的动态语言中,单例模式的实现方式很多样,而且可以非常灵活。下面,我们就来深入探讨单例模式在...

    单例模式(单例设计模式)详解1

    单例模式(单例设计模式)详解1

    C#单例模式详解 C#单例模式详解C#单例模式详解

    单例模式是软件设计模式中的一种,它保证一个类只有一个实例,并提供一个全局访问点。在C#中,单例模式常用于管理共享资源或控制类的实例化过程,以提高性能、节约系统资源,特别是在整个应用程序生命周期内只需要一...

    单例模式详解~~单例模式详解~~

    单例模式是一种设计模式,它的主要目标是确保一个类只有一个实例,并提供一个全局访问点。在软件工程中,单例模式常用于控制资源的共享,比如数据库连接池、线程池或者日志系统等,这些资源通常需要全局唯一且高效地...

    php设计模式之单例模式_.docx

    ### PHP设计模式之单例模式详解 #### 一、引言 在软件工程领域,设计模式是一种被广泛接受的解决方案,用于解决特定类型的问题。PHP作为一种流行的服务器端脚本语言,同样可以从这些设计模式中受益。本文将详细介绍...

    设计模式-单例设计模式

    ### 设计模式—单例设计模式详解 #### 定义 单例模式是一种常见的创建型设计模式,其核心思想在于确保一个类仅有一个实例存在,并且该实例由该类自行创建,随后向整个系统提供这一唯一实例。 #### 类图解析 在设计...

    JAVA设计模式之单例模式(完整版)[归类].pdf

    **Java设计模式:单例模式详解** 单例模式是软件设计中的一种常见模式,它确保一个类只有一个实例,并提供一个全局访问点。这种模式在控制资源的共享、提高性能或协调多个组件之间的交互等方面有着广泛的应用。 ##...

    Android编程设计模式之单例模式实例详解

    Android 编程设计模式之单例模式实例详解 Android 编程设计模式之单例模式是一种常用的设计模式,它可以保证某一个类只有一个实例,并且自行实例化并向整个系统提供这个实例。本文将详细介绍 Android 编程设计模式...

    Java设计模式之单例模式实例详解【懒汉式与饿汉式】

    Java设计模式之单例模式实例详解【懒汉式与饿汉式】 单例模式是Java设计模式中的一种,主要用于控制对象的实例化,确保整个应用程序中只有一个对象实例,并提供了一个全局的访问点。单例模式的主要优点是能够避免...

    JavaScript设计模式之单例模式详解

    这一次重温一下《JavaScript设计模式与开发实践》,开篇为单例模式。 /** * pre 单例模式 * 定义:保证一个类仅有一个实例,并提供一个访问它的全局访问点 * 应用:单例模式是一种常用的模式,有一些对象我们...

    java设计模式-单例.pdf

    ### Java设计模式——单例模式详解 #### 一、单例模式概述 单例模式是设计模式中的一个重要组成部分,属于创建型模式之一。其主要作用是确保某个类仅有一个实例存在,并提供一个全局访问该实例的方法。这在很多场景...

    3.31单例模式(单例设计模式)详解.docx

    单例模式是一种常用的软件设计模式,其主要目的是确保一个类在整个系统中只能有一个实例。这样做的好处在于节约系统资源,保证数据的一致性,以及避免因多个实例导致的潜在问题。例如,在Windows操作系统中,任务...

    android设计模式之单例模式详解

    主要介绍了android设计模式中的单例模式详解,需要的朋友可以参考下

    Asp.Net设计模式之单例模式详解

    单例模式是一种常用的软件设计模式,属于创建型模式的一种,其定义是确保一个类只有一个实例,并提供一个全局访问点来获取这个实例。在***环境中,单例模式可以帮助开发者管理共享资源,保持数据一致性,并控制对象...

    js设计模式之单例模式原理与用法详解

    单例模式是软件设计模式中的一种,其主要思想是确保一个类只有一个实例,并提供一个全局访问点。在JavaScript中,由于其动态特性和全局作用域,实现单例模式需要一些技巧来防止多次实例化。本篇文章将深入探讨单例...

Global site tag (gtag.js) - Google Analytics