`
阅读更多

一,饿汉式单例

//饿汉式单例1
public class Singleton1 {
	private static final Singleton1 instance = new Singleton1();
	private Singleton1(){}
	public static Singleton1 getInstance(){
		return instance;
	}
}

//饿汉式单例2
class Singleton{
	private static class Single{
		static final Singleton instance = new Singleton();
	}
	private Singleton(){}
	public static Singleton getInstance(){
		return Single.instance;
	}
}

 

二,懒汉式单例

//懒汉式单例
public class Singleton2 {
	private static Singleton2 instance = null;
	private Singleton2(){}
	public static synchronized Singleton2 getInstance(){
		if(instance == null){
			instance = new Singleton2();
		}
		return instance;
	}
}

 

三,DCL双重锁检测式单例

//DCL双重锁检测式单例
public class Singleton3 {
	private volatile static Singleton3 instance = null;
	private Singleton3(){}
	public static Singleton3 getInstance(){
		if(instance == null){
			synchronized(Singleton3.class){
				if(instance == null){
					instance = new Singleton3();
				}
			}
		}
		return instance;
	}
//参考文章:http://www.ibm.com/developerworks/cn/java/j-dcl.html
}

 

 

四,登记式单例

import java.lang.reflect.Constructor;
import java.util.HashMap;
import java.util.Map;

//登记式单例
public class Singleton4 {
	private  static final Map<String,Singleton4> instances =
			new HashMap<String,Singleton4>();
	static{
		Singleton4 instance = new Singleton4();
		instances.put(instance.getClass().getName(), instance);
	}
	protected Singleton4(){}
	public static synchronized Singleton4 getInstance(String name){
		if(name == null){
			name = Singleton4.class.getName();
		}
		if(instances.get(name) == null){
			try {
				Constructor con = Class.forName(name).getDeclaredConstructor();
				con.setAccessible(true);
				instances.put(name, (Singleton4)con.newInstance());
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		return instances.get(name);
	}
//参考文章:http://www.cnblogs.com/whgw/archive/2011/10/05/2199535.html
}

 

1
2
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    Java设计模式之单例模式的七种写法

    在 Java 中,单例模式的写法有好几种,主要有懒汉式单例、饿汉式单例、登记式单例等。 懒汉式单例是一种常见的单例模式实现方式,它在第一次调用的时候实例化自己。下面是懒汉式单例的四种写法: 1、基本懒汉式...

    单例模式的几种实现方式

    下面将详细介绍单例模式的几种常见实现方式。 1. 饿汉式(静态常量) 饿汉式单例在类加载时就完成了初始化,因此线程安全。这种方式简单且效率高,但如果单例对象不被使用,会造成内存浪费。 ```java public class...

    7种单例模式

    下面将详细介绍七种常见的单例模式实现方式,并结合多线程环境和反序列化测试进行讨论。 1. **饿汉式单例**: 这是最简单的单例实现,它在类加载时就创建了实例,因此是线程安全的。 ```java public class ...

    几种单例模式demo

    单例模式的实现方式有很多种,下面我们将详细探讨几种常见的单例模式的实现方法: 1. 饿汉式(静态常量): 这种方式在类加载时就完成了初始化,因此是线程安全的。 ```java public class Singleton { private ...

    几种单例模式说明(并有实例)

    根据给定的信息,本文将详细解释几种常见的单例模式,并通过具体的Java代码示例来阐述每种模式的特点和实现方式。 ### 单例模式简介 单例模式是一种常用的软件设计模式,它保证一个类只有一个实例,并提供一个全局...

    设计模式之单例模式(结合工厂模式)

    此外,单例模式还有几种变体,比如静态内部类单例和枚举单例。静态内部类单例利用Java类加载机制保证了线程安全,而枚举单例则是Java中实现单例的最佳方式,因为它天然支持序列化且防止反射攻击。 在代码实现上,...

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

    首先,实现C#单例模式通常有几种常见方法: 1. 饿汉式(静态常量): 这种方式在类加载时就完成了实例化,线程安全,但可能导致不必要的内存占用。 ```csharp public class Singleton { private static ...

    设计模式——单例模式

    为了解决懒汉式单例模式的性能问题,有几种优化策略: 1. **双检锁/双重校验锁(DCL,即 double-checked locking)** ```java public class Singleton { private volatile static Singleton instance; private ...

    单例模式各种实现方式

    以下是几种常见的单例模式实现方式: 1. **饿汉式(静态常量)**: 这是最简单的实现方式,它在类加载时就完成了初始化,因此是线程安全的。 ```java public class Singleton { private static final Singleton...

    java-单例模式几种写法

    以下是对这六种常见单例模式实现方式的详细解释: 1. **饿汉式(静态常量)** 这是最简单的单例实现,它在类加载时就创建了实例,线程安全。 ```java public class Singleton { private static final Singleton...

    Java 单例模式 工具类

    首先,让我们了解单例模式的几种常见实现方式: 1. 饿汉式(静态常量): 这是最简单的单例实现,它在类加载时就完成了初始化,因此是线程安全的。 ```java public class Singleton { private static final ...

    设计模式之单例模式源码demo

    单例模式的实现方式有很多种,主要分为以下几种: 1. **饿汉单例模式**:在类加载时就完成初始化,因此静态变量`instance`会随着类的加载而被创建。这种方式线程安全,且因为单例在类加载时已经创建,所以不存在多...

    单例模式应用场景

    通过对上述应用场景的分析,我们可以总结出单例模式适用的几种情况: - **资源共享:** 当需要频繁访问某个资源(如日志文件、配置文件等)时,采用单例模式可以减少资源操作所带来的性能损耗。 - **控制资源:** ...

    Python中的单例模式的几种实现方式的及优化

    本篇文章将深入探讨Python中实现单例模式的几种方式以及它们的优缺点和优化策略。 首先,Python的模块机制实际上天然地支持单例模式。当模块首次被导入时,解释器会执行模块中的所有代码,生成相应的`.pyc`文件。...

    设计模式-单例模式

    在Java中,实现单例模式主要有以下几种方式: 1. **饿汉式(静态常量)**: 这是最简单的一种实现方式,它在类加载时就完成了实例化,避免了多线程同步问题。 ```java public class Singleton { private static...

    Java单例模式深入理解

    在Java中,常见的单例模式实现方式有以下几种: 1. 饿汉式(静态常量): 这种实现方式在类加载时就完成了初始化,所以是线程安全的。代码如下: ```java public class Singleton { private static final ...

    java 设计模式 mvc模式 单例模式 代理 工厂 简单工厂 第二部分

    本篇将深入探讨标题中提及的几种设计模式:Model-View-Controller(MVC)模式、单例模式、代理模式以及工厂模式,尤其是简单工厂模式。 **1. Model-View-Controller (MVC) 模式** MVC模式是一种架构模式,它将应用...

    关于单例模式的知识要点

    单例模式的常见实现方式有以下几种: 1. **饿汉式(Eager Initialization)**:在类加载时就完成了初始化,所以类加载比较慢,但获取实例的速度快,线程安全。这是通过静态常量或者静态初始化块来实现的。 ```java...

    单例模式案例和笔记,通过案例来了解单例模式

    单例模式通常分为以下几种实现方式: A. **懒汉模式(Lazy Initialization)**: 这种模式下,实例化是在第一次调用`getInstance()`时进行的,因此称为“懒汉”模式。但是,这种方法在多线程环境中不安全,可能...

    设计模式之单例模式(AS3实现)

    单例模式是软件设计模式中的一种经典模式,其主要目的是控制类的实例化过程,确保在程序运行过程中,对于某个类,全局只有一个实例存在。这种模式在资源管理、配置对象或者全局缓存等场景中非常常见。在ActionScript...

Global site tag (gtag.js) - Google Analytics