`
wsmajunfeng
  • 浏览: 498108 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

(转)三种Singleton的实现方式

 
阅读更多

三种Singleton的实现方式,一种是用大家熟悉的DCL,另外两种使用cas特性来实现。 

Java代码  收藏代码
  1. public class LazySingleton {     
  2.     private static volatile LazySingleton instance;     
  3.          
  4.     public static LazySingleton getInstantce() {     
  5.         if (instance == null) {     
  6.             synchronized (LazySingleton.class) {     
  7.                 if (instance == null) {     
  8.                     instance = new LazySingleton();     
  9.                 }  
  10.             }     
  11.         }     
  12.         return instance;     
  13.     }     
  14. }    


Java代码  收藏代码
  1. /** 
  2.  * 利用putIfAbsent线程安全操作,实现单例模式 
  3.  *  
  4.  * @author Administrator 
  5.  *  
  6.  */  
  7. public class ConcurrentSingleton {  
  8.     private static final ConcurrentMap<String, ConcurrentSingleton> map = new ConcurrentHashMap<String, ConcurrentSingleton>();  
  9.     private static volatile ConcurrentSingleton instance;  
  10.   
  11.     public static ConcurrentSingleton getInstance() {  
  12.         if (instance == null) {  
  13.             instance = map.putIfAbsent("INSTANCE"new ConcurrentSingleton());  
  14.         }  
  15.         return instance;  
  16.     }  
  17. }  


Java代码  收藏代码
  1. public class AtomicBooleanSingleton {  
  2.     private static AtomicBoolean initialized = new AtomicBoolean(false);  
  3.     private static volatile AtomicBooleanSingleton instance;  
  4.       
  5.     public static AtomicBooleanSingleton getInstantce() {     
  6.         checkInitialized();  
  7.         return instance;     
  8.     }  
  9.       
  10.     private static void checkInitialized() {  
  11.         if(instance == null && initialized.compareAndSet(falsetrue)) {  
  12.             instance = new AtomicBooleanSingleton();  
  13.         }  
  14.     }  
  15. }  

分享到:
评论

相关推荐

    GoF+23种设计模式解析附C++实现源码(2nd+Edition).pdf

    根据提供的文档信息,本文...以上就是GoF的23种设计模式的概述及其在C++中的实现方式。每种模式都解决了特定的软件设计问题,并提供了有效的解决方案。通过理解和应用这些模式,可以提高代码的质量、灵活性和可维护性。

    23种设计模式类图

    单例模式是一种行为型模式,它提供了一种简单的方式来实现单例对象。单例模式由两个部分组成:Singleton和SingletonClient。Singleton是单例对象,SingletonClient是客户端。 在单例模式中,Singleton负责创建单例...

    23种设计模式的Java实现

    在Java中,可以使用双重检查锁定(Double-Check Locking)或者静态内部类方式来实现。 2. 工厂模式(Factory):提供一个接口,用于创建一系列相关或相互依赖的对象,而无需指定它们的具体类。简单工厂、工厂方法和...

    java 23种设计模式及具体例子

    * 模板方法模式:模板方法模式是一种行为型模式,它提供了一种实现算法的框架,以便于更好地实现对象之间的关系。 * 观察者模式:观察者模式是一种行为型模式,它可以将对象之间的关系建立在观察者和被观察者之间,...

    java常用的二十三种设计模式

    ### Java常用的二十三种设计模式 #### 1. 工厂模式(Factory) 工厂模式是一种常用的创建型设计模式,它的核心思想是通过一个专门的类(即工厂类)来负责创建对象,而不是直接通过new关键字实例化对象。这种方式...

    java23种设计模式实现的具体代码共享

    创建型模式关注的是对象的创建方式,通过提供一种机制来创建对象,同时又可以隐藏创建逻辑。主要包括: 1. **工厂方法模式**:定义一个创建对象的接口,但让实现这个接口的类来决定实例化哪个类。工厂方法使一个类...

    设计模式精解-GoF 23种设计模式解析附C++实现源码

    ### 设计模式精解——GoF 23种设计模式解析及C++实现源码 #### 引言 设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。GoF(Gang of Four)所提出的23种设计模式,被认为是面向对象...

    GoF 23种设计模式解析附C++实现源码.pdf

    ### GoF 23种设计模式解析及C++实现概览 #### 一、引言 本书《GoF 23种设计模式解析附C++实现源码》是一本全面介绍GoF(Gang of Four)所提出的23种设计模式的经典之作。书中不仅详细解释了每种设计模式的概念、...

    23种设计模式的C++实现

    首先,我们要了解23种经典设计模式的分类,它们主要分为三大类:创建型模式、结构型模式和行为型模式。 1. 创建型模式(Creational Patterns): - 单例模式(Singleton):保证一个类仅有一个实例,并提供一个...

    PHP5面向对象(第三章_类特性)

    在设计模式中,单例模式(Singleton Pattern)是一种常见的使用静态方法的例子,它保证一个类只有一个实例,并提供一个全局访问点。通过结合静态方法和私有构造函数,单例模式确保了类的唯一实例,同时限制了外部...

    23种设计模式的C++实现.zip

    - 解释器模式(Interpreter):提供一种方式来表达语言或算术表达式的语法。 - 迭代器模式(Iterator):顺序访问聚合对象的元素,而又不暴露其底层表示。 - 中介者模式(Mediator):定义对象间的一种一对多的...

    《设计模式--基于C#的工程化实现及扩展》.(王翔)

    C#中的委托和事件机制可以作为实现适配器模式的一种方式,或者通过创建包装类来实现接口的转换。 八、代理模式(Proxy) 代理模式为其他对象提供一种代理以控制对这个对象的访问。在C#中,可以使用虚拟代理、远程...

    SSH框架部分常见面试题.pdf

    Spring 动态代理有两种实现方式:Java 实现动态代理和 CGLib 实现动态代理。 AOP AOP 是面向切面编程,用于管理跨切面的业务逻辑。 事务 事务是数据库操作的基本单位,事务有四大特征:原子性、一致性、隔离性、...

    有关static block静态代码块和单态设计模式

    在Java中,实现Singleton通常有两种方式: 1. **饿汉式(Eager Initialization)**:在类加载时就创建了唯一实例,即静态变量在类加载时被初始化。这种方式简单且线程安全,但可能会造成不必要的内存占用。 ```...

    23种设计模式的java实现

    在Java编程语言中,这23种设计模式可以分为三大类:创建型模式、结构型模式和行为型模式。 1. **创建型模式**(Creational Patterns): - **Proxy**(代理模式):为其他对象提供一种代理以控制对这个对象的访问...

    23种设计模式解析附实现源码(2nd+Edition).pdf

    ### 23种设计模式解析及其实现源码概览 #### 一、概述 《23种设计模式解析附实现源码(2nd Edition)》是一本深度解析设计模式的经典著作,书中不仅详尽地介绍了GoF所提出的23种设计模式,还提供了具体的实现代码,...

Global site tag (gtag.js) - Google Analytics