什么是单例模式?
单例模式就是某个类只有唯一一个实例。
单例模式的意图
单例模式的意图是为了确保一个类有且仅有一个实例,并且为它提供一个全局的访问点
单例模式的要点
- 一个类只有一个实例
- 类必须自行创建这个实例
- 类自行向系统提供实例
常见的单例实现方式
- 饿汉模式
/** * 饿汉单例模式 * @author zhanfgwei * @version $Id: HungrySingleton.java, v 0.1 2014年9月20日 下午10:17:11 Lenovo Exp $ */ public class EagerSingleton { /***初始化一个实例**/ private static final EagerSingleton instance = new EagerSingleton(); /** * 私有化的构造方法 */ private EagerSingleton() { super(); } /** * 静态工厂方法获取实例 * * @return */ public static EagerSingleton getInstance() { return instance; } }
- 懒汉模式-线程安全
/** * * @author zhangwei * @version $Id: SafeLazySingleton.java, v 0.1 2014年9月20日 下午10:25:04 Lenovo Exp $ */ public class SafeLazySingleton { /** * 实例属性 */ private static SafeLazySingleton instance = null; /** * 私有化构造方法 */ private SafeLazySingleton() { } /** *同步的静态工厂方法 * * @return */ synchronized public static SafeLazySingleton getInstance() { if (instance == null) { instance = new SafeLazySingleton(); } return instance; } }
- 内部类方式
/** * * @author zhangwei * @version $Id: InnerSingleton.java, v 0.1 2014年9月20日 下午11:11:26 Lenovo Exp $ */ public class InnerSingleton { /** * 私有化的构造方法 */ private InnerSingleton() { } /** * 静态内部类,持有实例 * * @author zhangwei * @version $Id: InnerSingleton.java, v 0.1 2014年9月20日 下午11:22:35 Lenovo Exp $ */ private static class InstanceHolder { static InnerSingleton instance = new InnerSingleton(); } /** * 静态工厂方法, * * @return */ public static InnerSingleton getInstance() { return InstanceHolder.instance; } }
- 登记式
/** * * @author zhangwei * @version $Id: RegisterSingletone.java, v 0.1 2014年9月20日 下午10:27:12 Lenovo Exp $ */ public class RegisterSingleton { private static Map<String, RegisterSingleton> registers = new ConcurrentHashMap<String, RegisterSingleton>(); static { registers.put(RegisterSingleton.class.getName(), new RegisterSingleton()); } private RegisterSingleton() { } public static RegisterSingleton getInstance(String name) { if (name == null) { name = RegisterSingleton.class.getName(); } if (registers.get(name) == null) { try { registers.put(name, (RegisterSingleton) Class.forName(name).newInstance()); } catch (Exception e) { LoggerUtils.error("异常"); } } return registers.get(name); } }
相关推荐
在Java编程语言中,设计模式是一种经过验证的解决常见软件设计问题的最佳实践。单例模式是其中最常用的一种,它的核心思想是确保一个类只有一个实例,并提供全局访问点。单例模式的应用场景包括:控制资源的访问、...
Java设计模式-单例模式详解 单例模式是 Java 设计模式中的一种常用的设计模式,旨在保证一个类仅有一个实例,并提供一个访问它的全局访问点。单例模式的目的是为了保证在一个进程中,某个类有且仅有一个实例。 ...
### Java设计模式——单例模式详解 #### 一、单例模式概述 单例模式是设计模式中的一个重要组成部分,属于创建型模式之一。其主要作用是确保某个类仅有一个实例存在,并提供一个全局访问该实例的方法。这在很多场景...
**设计模式——单例模式** 单例模式是一种广泛应用于软件设计中的创建型设计模式,它的核心思想是确保一个类只有一个实例,并提供一个全局访问点。这样做的好处在于控制共享资源的访问,比如线程安全的数据库连接池...
单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一,有以下特点: 1. 单例类只能有一个实例。 2. 单例类必须自己创建自己的唯一实例。 3. 单例类必须给所有其他对象提供这一实例。 单例模式有多种实现...
设计模式-单例模式 单例模式是一种常见的设计模式,它的主要作用是确保在内存中仅创建一次对象,并提供一个全局访问点。单例模式有两种类型:饿汉类型和懒汉类型。 饿汉类型的单例模式是在类加载时创建对象,例如...
单例模式是软件设计模式中的一种经典模式,它在Java编程中被广泛使用。这个模式的主要目的是确保一个类只有一个实例,并提供一个全局访问点。这样做的好处在于可以控制实例的数量,减少资源消耗,同时便于协调整个...
单例模式是软件设计模式中的一种经典模式,其主要目的是保证一个类只有一个实例,并提供一个全局访问点。在Java中,有多种实现单例模式的方法,包括简单实现、双重检查锁定(Double-Checked Locking)、静态内部类和...
### 设计模式—单例设计模式详解 #### 定义 单例模式是一种常见的创建型设计模式,其核心思想在于确保一个类仅有一个实例存在,并且该实例由该类自行创建,随后向整个系统提供这一唯一实例。 #### 类图解析 在设计...
单例模式是软件设计模式中的一种,它保证一个类只有一个实例,并提供全局访问点。这种模式在许多场景下非常有用,比如控制共享资源、管理系统级别的对象,如数据库连接池或者线程池等。单例模式的核心在于限制类的...
单例模式是软件设计模式中的一种经典模式,它在许多场景下被广泛使用,尤其是在需要全局唯一实例的情况下。本文将深入探讨单例模式的概念、作用、实现方式以及其在实际编程中的应用。 单例模式的核心思想是确保一个...
单例设计模式是面向对象编程中的一种常见设计模式,它的主要目的是确保一个类在整个程序运行期间只有一个实例,并提供全局访问点。这种模式在Java中被广泛应用,尤其是在需要控制资源的共享,如数据库连接池,线程池...
根据给定文件内容,以下是关于Java设计模式的知识点说明: 1. 策略模式(Strategy Pattern)是一种行为设计模式,允许在运行时选择算法的行为。策略模式的意图是定义一系列算法,将每个算法封装起来,并使它们可以...
单例模式是软件设计模式中的一种,用于控制类的实例化过程,确保一个类只有一个实例,并提供全局访问点。在Java中,实现单例模式有多种方法,每种方法都有其特点和适用场景。以下是对这六种常见单例模式实现方式的...
单例模式是软件设计模式中的一种经典模式,它确保一个类只有一个实例,并提供一个全局访问点。这种模式在很多场景下都非常有用,比如控制共享资源、管理系统级别的服务或者简化对象间的交互。以下是对单例模式的详细...
Java设计模式是软件开发中的一种最佳实践,它总结了在解决特定问题时程序员们经常采用的有效方法。这个“JAVA设计模式-chm版”资源显然包含了关于Java设计模式的详细信息,便于理解和应用。设计模式是对常见问题的...
Java设计模式是面向对象编程中的重要概念,它们是软件开发中经过验证的、解决常见问题的最佳实践。在这些模式中,单例模式是最为广泛使用的一种。单例模式确保一个类只有一个实例,并提供一个全局访问点,使得在整个...
Java设计模式之单例模式的七种写法 单例模式是一种常见的设计模式,它确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。在计算机系统中,线程池、缓存、日志对象、对话框、打印机的驱动程序对象常...
单例模式(Singleton Pattern)是一种常用的软件设计模式,它保证一个类仅有一个实例,并提供一个访问该实例的全局访问点。这种模式通常用于需要频繁地创建和销毁的对象,以减少系统性能开销。 单例模式的优点: ...
单例模式是软件设计模式中的一种经典模式,它在Java编程中被广泛使用,尤其是在需要控制实例化过程,或者确保某类只有一个实例时。本文将深入探讨Java中的单例模式,帮助你理解其原理和应用。 单例模式的核心思想是...