Java singleton是指这样的类,它只能实例化一次,singleton通常被用来代表那些本质上具有唯一性的系统组件。
实现singleton有两种方法:这两种方法都要把构造函数保持为私有的,并且提供一个静态成员,以便允许客户能够访问该类唯一的实例。
第一种方法,共有静态成员是一个final域:
// Singleton with final field
public class Singleton {
private static final Singleton _INSTANCE = new Singleton();
private Singleton(){}
}
私有构造函数仅被调用一次,用来实例化共有的静态final域Singleton._INSTANCE,由于缺少public或者protected构造
函数,所以保证了Singleton的全局唯一性,一旦Singleton类被实例化之后,只有一个Singleton实例存在,客户的任何行为都不会改
变这一点。
第二种方法提供了一个公有的静态工厂方法,而不是公有的静态final域:
// Singleton with static method
public class Singleton {
private static final Singleton _INSTANCE = new Singleton();
private Singleton(){}
public synchronized static Singleton getInstance() {
return _INSTANCE;
}
}
所有对于静态方法Singleton._INSTANCE的调用,都会返回同一个对象引用,所有,不会有别的Singleton实例被创建。
第二种方法的好处在于利用JVM特性(内联)来提高了点效率。
如果遇到需要Singleton类变成可序列化(serializable),仅仅在声明中加上"implements
Serializable"是不够的,为了维护singleton性,必须提供一个readResolve方法,否则的话,一个序列化的实例在每次反序列
化的时候,都会导致创建一个新的实例,解决方法:
private Object readResolve() throws ObjectStreamException {
return _INSTANCE;
}
分享到:
相关推荐
Java中的Singleton(单例模式)是一种常用的软件设计模式,它保证了类只有一个实例,并提供一个全局访问点。这种模式在需要频繁创建和销毁对象的场景中特别有用,因为它可以节省系统资源,例如数据库连接或者线程池...
简单的单例模式举例Singleton 分为恶汉式 懒汉式
Java单例模式是一种常见的设计模式,它保证一个类只有一个实例,并提供一个全局访问点。在多线程环境中,单例模式能确保即使有多个线程同时执行,也只会创建一个对象,这对于那些需要频繁创建和销毁的对象,或者需要...
Singleton模式包含的角色只有一个,就是Singleton。Singleton拥有一个私有构造函数,确保用户无法通过new直接实例化它。除此之外,该模式中包含一个静态私有成员变量instance与静态公有方法Instance()。Instance()...
在Java中,Singleton模式的实现有多种方式,每种方式都有其优缺点,我们将详细探讨这些实现方法并进行对比。 ### 1. 饿汉式(Static Final Field) 这是最简单的Singleton实现方式,通过静态初始化器在类加载时就...
### Java的Singleton模式详解 #### 一、Singleton模式概述 Singleton模式是一种常用的设计模式,在Java中主要用于确保一个类只有一个实例,并提供一个全局访问点。这种模式对于管理共享资源(如数据库连接池、...
这里我们将深入探讨三种常见的Java设计模式:单例(Singleton)、工厂方法(Factory Method)和抽象工厂(Abstract Factory)。 **单例模式(Singleton)** 单例模式确保一个类只有一个实例,并提供一个全局访问点...
在Java中,实现Singleton有多种方式,包括: 1. 饿汉式(静态常量): 在类加载时就完成实例化,避免了线程同步问题。但如果从始至终从未使用过Singleton,会导致内存浪费。 ```java public class Singleton { ...
在Java编程中,Singleton模式是一种常用的设计模式,它确保一个类只有一个实例,并提供一个全局访问点。线程安全的Singleton模式对于多线程环境尤为重要,因为它可以防止多个线程同时创建多个实例。本文将详细介绍...
单例模式是软件设计模式中的一种经典模式,它在Java编程中被广泛使用。这个模式的主要目的是确保一个类只有一个实例,并提供一个全局访问点。这样做的好处在于控制资源的共享,减少系统开销,以及在多线程环境中避免...
单例模式(Singleton Pattern)是软件设计模式中的一种,它保证一个类只有一个实例,并提供一个全局访问点。这种模式在很多场景下非常有用,比如控制资源的唯一性、全局配置对象或者缓存服务等。本篇文章将深入探讨...
Singleton 单例模式是软件设计模式中的一种,它限制了类的实例化过程,确保一个类在整个系统中只有一个实例存在。这种模式常用于系统资源管理,比如数据库连接、线程池或者缓存服务等,因为这些资源往往需要全局共享...
本资料主要介绍了Java语言中实现单例模式的五种常见方法。 1. 饿汉式(静态常量): 这是最简单的单例模式实现方式,它在类加载时就完成了初始化,所以是线程安全的。代码如下: ```java public class Singleton {...
当前文档主要讨论的是Java编程中的Singleton设计模式,这是一种在软件工程中用于控制类的实例化过程,确保在程序运行期间,某类只有一个实例存在的设计模式。Singleton模式在很多场景下非常有用,例如数据库连接池、...
在Java编程中,实现单例模式有多种方式,其中包括静态常量、线程安全的同步方法、双重检查锁定(Double-Checked Locking)以及静态内部类。下面将详细阐述这些实现方式。 1. 静态常量单例: 这是最简单的单例实现...
单例模式(Singleton Pattern)是一种常用的软件设计模式,它的核心思想是确保一个类在整个应用程序中只有一个实例存在,并提供一个全局访问点来获取这个实例。这种模式在很多场景下非常有用,比如管理系统资源、...
在Java或其他面向对象的语言中实现Singleton模式,有多种方法,但核心思想都是控制类的实例化过程。下面我们将详细介绍Singleton模式的几种常见实现方式: 1. 饿汉式(静态常量): 在类加载时就完成了初始化,...
Java是一种广泛使用的面向对象的编程语言,其强大的特性和丰富的库使其在软件开发领域占据了重要地位。本练习主要涵盖了三个核心概念:反射(Reflect)、单例模式(Singleton)以及DOM和SAX两种XML解析方式。 1. ...