单例(Singleton)设计模式保证每个类只有一个实例,并为这个实例提供一个全局的访问点。
与工具类中的静态成员不同,单例类一般用来保存应用程序的状态数据,这些数据在应用程序的各个部分都可能被访问或修改。
单例模式的几种实现方式。
public class Singleton{
private static Singleton instance = new Singleton();
public static Singleton getInstance() {
return instance;
}
/** Don't let anyone else instantiate this class */
private Singleton() {
}
}
这种方式实现简单,并且保证实例的唯一性,缺点是必须先加载后使用,而且不管单例类是否真正使用到,实例总是会先被加载,这看起来相当的不妥,因而有了懒加载(Lazy Initialization)的模式。
public class Singleton {
private static Singleton instance = null;
private Singleton() {
}
public static Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}
这种方式可以实现懒加载,但当多个线程同时进入getInstance方法时,可能会产生多份实例,这显然违背单例模式的初衷。为了避免这种情况,考虑加上同步(synchronized)机制。
public class Singleton {
private static Singleton instance = null;
private Singleton(){
}
synchronized static public Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}
这种方式可以在懒加载的同时保证只有一份实例,但对整个getInstance方法作同步处理会带来线程同步上的性能消耗。
public class Singleton {
private static Singleton instance;
private Singleton(){
}
public static Singleton getInstance() {
if (instance == null){
synchronized(Singleton.class){
if(instance == null) {
instance = new Singleton();
}
}
}
return instance;
}
}
上面的方式就是所谓的Double-check Locking即双重检查和锁定模式,目前看来很完美。
阅读全文
分享到:
相关推荐
Java设计模式-单例模式详解 单例模式是 Java 设计模式中的一种常用的设计模式,旨在保证一个类仅有一个实例,并提供一个访问它的全局访问点。单例模式的目的是为了保证在一个进程中,某个类有且仅有一个实例。 ...
本文将聚焦于创建型设计模式,特别是单例模式和原型模式,这两种模式在对象的创建方面扮演着重要的角色。 单例模式是一种限制类实例化次数的设计模式,确保在整个应用程序中,一个类只有一个实例存在。这在某些场景...
这里我们将深入探讨三种常见的Java设计模式:单例(Singleton)、工厂方法(Factory Method)和抽象工厂(Abstract Factory)。 **单例模式(Singleton)** 单例模式确保一个类只有一个实例,并提供一个全局访问点...
Java设计模式之单例模式详解 一、单例模式概览 单例模式(Singleton Pattern)是面向对象设计模式中的一种,属于创建型模式。它确保一个类仅有一个实例,并提供一个全局访问点来访问该实例。单例模式的核心在于控制...
Java设计模式是面向对象编程中的重要概念,它们是软件开发中经过验证的、解决常见问题的最佳实践。在这些模式中,单例模式是最为广泛使用的一种。单例模式确保一个类只有一个实例,并提供一个全局访问点,使得在整个...
### Java设计模式——单例模式详解 #### 一、单例模式概述 单例模式是设计模式中的一个重要组成部分,属于创建型模式之一。其主要作用是确保某个类仅有一个实例存在,并提供一个全局访问该实例的方法。这在很多场景...
Java设计模式之单例模式的七种写法 单例模式是一种常见的设计模式,它确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。在计算机系统中,线程池、缓存、日志对象、对话框、打印机的驱动程序对象常...
单例模式是软件设计模式中的一种经典模式,它主要用于控制类的实例化过程,确保一个类在整个应用程序中只有一个实例存在。这种模式在Java编程中非常常见,特别是在需要频繁实例化然后销毁的对象,或者需要共享资源的...
单例模式是软件设计模式中的一种经典模式,它在Java编程中被广泛使用,尤其是在需要控制实例化过程,或者确保某类只有一个实例时。本文将深入探讨Java中的单例模式,帮助你理解其原理和应用。 单例模式的核心思想是...
【深入浅出单例Singleton模式】 单例模式是一种在软件设计中常见的设计模式,它的核心目标是确保一个类只有一个实例,并提供一个全局访问点。在Java等面向对象编程语言中,单例模式常用于控制资源的共享,如全局...
Java设计模式是软件开发中的重要概念,它是一种在特定情境下解决常见问题的模板或最佳实践。本主题将深入探讨三种关键的设计模式:单例模式、工厂模式和策略模式。 **单例模式** 是一种创建型设计模式,保证一个类...
Java设计模式中的单例模式是一种常用的创建型设计模式,它保证了类只有一个实例,并提供一个全局访问点。这种模式在很多场景下非常有用,比如控制共享资源、管理配置信息等。接下来,我们将深入探讨8种不同的单例...
在Java编程领域,设计模式是一种被广泛采用的最佳实践,它为解决常见的软件设计问题提供了标准的解决方案。单例模式是23种经典设计模式之...这些知识点对于理解和应用Java设计模式以及进行有效的资源管理具有重要意义。
简单的单例模式举例Singleton 分为恶汉式 懒汉式
单例模式是软件设计模式中的一种经典模式,用于确保一个类只有一个实例,并提供一个全局访问点。在Java中,有多种实现单例模式的方法,每种都有其特点和适用场景。接下来,我们将深入探讨这些实现方式。 首先,我们...
单例模式是软件设计模式中的经典模式之一,其主要目的是控制类的实例化过程,确保在应用程序的整个生命周期中,某个类只有一个实例存在。这样的设计通常适用于那些需要频繁创建和销毁,但资源消耗较大的对象,如...
### 设计模式总结:模板设计模式与单例模式 #### 模板设计模式 模板设计模式是一种行为型设计模式,它定义了一个算法的骨架,并允许子类为算法的某些步骤提供具体的实现。通过这种方式,算法的基本流程保持不变,...
【设计模式概述】 ...总的来说,单例模式、工厂模式和观察者模式都是Java中非常实用的设计模式,它们在实际开发中有着广泛的应用。理解并熟练掌握这些模式,可以帮助开发者编写出更加高效、可维护的代码。
**设计模式——单例模式** 单例模式是一种广泛应用于软件设计中的创建型设计模式,它的核心思想是确保一个类只有一个实例,并提供一个全局访问点。这样做的好处在于控制共享资源的访问,比如线程安全的数据库连接池...
单例模式是软件设计模式中的一种,它的主要目的是确保一个类只有一个实例,并提供一个全局访问点。这种模式在很多场景下都非常有用,比如控制数据库连接、日志系统或者配置管理等,因为这些都需要一个全局共享的对象...