三种Singleton的实现方式,一种是用大家熟悉的DCL,另外两种使用cas特性来实现。
- public class LazySingleton {
- private static volatile LazySingleton instance;
-
- public static LazySingleton getInstantce() {
- if (instance == null) {
- synchronized (LazySingleton.class) {
- if (instance == null) {
- instance = new LazySingleton();
- }
- }
- }
- return instance;
- }
- }
-
-
-
-
-
-
- public class ConcurrentSingleton {
- private static final ConcurrentMap<String, ConcurrentSingleton> map = new ConcurrentHashMap<String, ConcurrentSingleton>();
- private static volatile ConcurrentSingleton instance;
-
- public static ConcurrentSingleton getInstance() {
- if (instance == null) {
- instance = map.putIfAbsent("INSTANCE", new ConcurrentSingleton());
- }
- return instance;
- }
- }
- public class AtomicBooleanSingleton {
- private static AtomicBoolean initialized = new AtomicBoolean(false);
- private static volatile AtomicBooleanSingleton instance;
-
- public static AtomicBooleanSingleton getInstantce() {
- checkInitialized();
- return instance;
- }
-
- private static void checkInitialized() {
- if(instance == null && initialized.compareAndSet(false, true)) {
- instance = new AtomicBooleanSingleton();
- }
- }
- }
分享到:
相关推荐
根据提供的文档信息,本文...以上就是GoF的23种设计模式的概述及其在C++中的实现方式。每种模式都解决了特定的软件设计问题,并提供了有效的解决方案。通过理解和应用这些模式,可以提高代码的质量、灵活性和可维护性。
单例模式是一种行为型模式,它提供了一种简单的方式来实现单例对象。单例模式由两个部分组成:Singleton和SingletonClient。Singleton是单例对象,SingletonClient是客户端。 在单例模式中,Singleton负责创建单例...
在Java中,可以使用双重检查锁定(Double-Check Locking)或者静态内部类方式来实现。 2. 工厂模式(Factory):提供一个接口,用于创建一系列相关或相互依赖的对象,而无需指定它们的具体类。简单工厂、工厂方法和...
* 模板方法模式:模板方法模式是一种行为型模式,它提供了一种实现算法的框架,以便于更好地实现对象之间的关系。 * 观察者模式:观察者模式是一种行为型模式,它可以将对象之间的关系建立在观察者和被观察者之间,...
### Java常用的二十三种设计模式 #### 1. 工厂模式(Factory) 工厂模式是一种常用的创建型设计模式,它的核心思想是通过一个专门的类(即工厂类)来负责创建对象,而不是直接通过new关键字实例化对象。这种方式...
创建型模式关注的是对象的创建方式,通过提供一种机制来创建对象,同时又可以隐藏创建逻辑。主要包括: 1. **工厂方法模式**:定义一个创建对象的接口,但让实现这个接口的类来决定实例化哪个类。工厂方法使一个类...
### 设计模式精解——GoF 23种设计模式解析及C++实现源码 #### 引言 设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。GoF(Gang of Four)所提出的23种设计模式,被认为是面向对象...
### GoF 23种设计模式解析及C++实现概览 #### 一、引言 本书《GoF 23种设计模式解析附C++实现源码》是一本全面介绍GoF(Gang of Four)所提出的23种设计模式的经典之作。书中不仅详细解释了每种设计模式的概念、...
首先,我们要了解23种经典设计模式的分类,它们主要分为三大类:创建型模式、结构型模式和行为型模式。 1. 创建型模式(Creational Patterns): - 单例模式(Singleton):保证一个类仅有一个实例,并提供一个...
在设计模式中,单例模式(Singleton Pattern)是一种常见的使用静态方法的例子,它保证一个类只有一个实例,并提供一个全局访问点。通过结合静态方法和私有构造函数,单例模式确保了类的唯一实例,同时限制了外部...
- 解释器模式(Interpreter):提供一种方式来表达语言或算术表达式的语法。 - 迭代器模式(Iterator):顺序访问聚合对象的元素,而又不暴露其底层表示。 - 中介者模式(Mediator):定义对象间的一种一对多的...
C#中的委托和事件机制可以作为实现适配器模式的一种方式,或者通过创建包装类来实现接口的转换。 八、代理模式(Proxy) 代理模式为其他对象提供一种代理以控制对这个对象的访问。在C#中,可以使用虚拟代理、远程...
Spring 动态代理有两种实现方式:Java 实现动态代理和 CGLib 实现动态代理。 AOP AOP 是面向切面编程,用于管理跨切面的业务逻辑。 事务 事务是数据库操作的基本单位,事务有四大特征:原子性、一致性、隔离性、...
在Java中,实现Singleton通常有两种方式: 1. **饿汉式(Eager Initialization)**:在类加载时就创建了唯一实例,即静态变量在类加载时被初始化。这种方式简单且线程安全,但可能会造成不必要的内存占用。 ```...
在Java编程语言中,这23种设计模式可以分为三大类:创建型模式、结构型模式和行为型模式。 1. **创建型模式**(Creational Patterns): - **Proxy**(代理模式):为其他对象提供一种代理以控制对这个对象的访问...
### 23种设计模式解析及其实现源码概览 #### 一、概述 《23种设计模式解析附实现源码(2nd Edition)》是一本深度解析设计模式的经典著作,书中不仅详尽地介绍了GoF所提出的23种设计模式,还提供了具体的实现代码,...