方法一:
import java.io.ObjectStreamException;
import java.io.Serializable;
public class E1 implements Serializable {
private E1(){
//pervent from created object by reflect
if(INSTANCE !=null) throw new RuntimeException("duplicate instance!");
}
private final static E1 INSTANCE =new E1();
public static E1 getInstance(){
return INSTANCE;
}
public void print(){
System.out.println("singleton test");
}
// readResovle method to preserve singleton property
private Object readResolve() throws ObjectStreamException {
return INSTANCE;
}
public static void main(String []args){
E1 a =E1.getInstance();
E1 b =E1.getInstance();
System.out.print(a.equals(b)?true:false);
}
}
方法二(推荐):
public enum E2 {
INSTANCE;
public void print(){
System.out.println("singleton test");
}
public static void main(String []args){
E2 a=E2.INSTANCE;
E2 b=E2.INSTANCE;
System.out.print(a.equals(b)?true:false);
}
}
分享到:
相关推荐
Singleton模式是一种常用的软件设计模式,它保证一个类只有一个实例,并提供一个全局访问点。这种模式在很多场景下都非常有用,例如管理共享资源,如数据库连接池,或者确保某个对象在整个系统中的唯一性。下面我们...
单例模式,Singleton两种代码实现。一般实现方法,泛型实现方法(推荐)
这种方法结合了前两种方式的优点,既延迟初始化又避免了不必要的同步。 ```java public class Singleton { private volatile static Singleton instance; private Singleton() {} public static Singleton ...
为了解决懒汉式的线程安全问题,可以采用以下两种方式: - **双重检查锁定(Double-Checked Locking)**:在多线程环境下,只有当instance为null时才进行同步,降低了同步的开销。 ```java public class Singleton ...
单例模式有两种实现方式:饿汉式和懒汉式。 饿汉式是指在类初始化时直接创建实例对象,不管你是否需要这个对象都会创建。例如: ``` Class persion{ Public static final persion INNER; Static { INNER=new ...
在Java中,单例模式的实现方式多种多样,但常见的有饿汉式(Eager Initialization)和懒汉式(Lazy Initialization)两种。 1. **饿汉式**: 饿汉式是在类加载时就完成了初始化,所以类加载比较慢,但获取对象的...
在Java中,通常我们采用懒汉式和饿汉式两种方式实现 Singleton。 1. **懒汉式 Singleton**:延迟初始化,只有在第一次调用 getInstance 方法时才创建实例。这种方式线程不安全,如果在多线程环境下可能会创建多个...
单例模式的核心在于限制类的实例化,通常通过私有化构造函数和静态工厂方法来实现。当类的实例第一次被请求时,会创建一个对象并将其存储在一个静态变量中,后续的请求都会返回这个已经创建的对象,而不是创建新的...
- **设备管理**:例如,两台打印机不能同时打印同一个文件,需要通过单例模式来协调。 #### 优缺点 - **优点**: - 内存优化:在内存中只有一个实例,减少内存开销。 - 资源保护:避免对资源的多重占用。 - **...
在Python编程中,Singleton模式是一种设计模式,它保证一个类只有一个实例,并提供一个全局访问点。这个模式在某些场景下非常有用,例如管理共享资源、配置对象或者数据库连接。在Python中,通常通过元类(metaclass...
单态模式(Singleton模式)是Java设计模式中的一种,它的主要目标是确保一个类在整个应用程序中只有一个实例存在。这种模式的应用场景广泛,特别是在需要全局共享的资源管理、配置中心、日志服务等场合非常常见。 ...
实现单例模式通常有两种主要方法:饿汉式和懒汉式。 1. 饿汉式单例: 这种方式在类加载时就完成了初始化,因此线程安全。但是由于类加载较早,即使在单例不需要时也创建了对象,可能造成内存浪费。 ```java ...
在C#中实现Singleton模式,通常有两种常见的方法:懒汉式和饿汉式。 1. **懒汉式(线程不安全)** 这是最直观的实现方式,首次使用时才创建实例。但这种实现方式在多线程环境下可能导致多个线程同时创建实例,破坏...
在给出的部分代码中,我们可以看到一个抽象类`GenericServlet`被定义,其中包含了两个抽象方法`doGet`和`doPost`以及一个具体的方法`service`。这个抽象类充当了模板的角色,而`doGet`和`doPost`则是在不同场景下...
下面是 Singleton 单类模式的两种实现方式的代码示例: 饱汉单类模式: ```java public class Singleton1 { // 饱汉模式,声明时就创建实例对象 public static final Singleton1 instance = new Singleton1(); /...
Singleton 模式的模型图可以分为逻辑模型图和物理模型图两部分。 逻辑模型图 在逻辑模型图中,Singleton 模式的类图结构可以表示为: * Singleton 类:该类负责提供一个全局的访问点,并保证只有一个实例。 * ...
单例模式有两种常见的实现方式:饿汉式和懒汉式。 - 饿汉式(Eager Initialization):在类加载时就创建了单例对象,这种方式简单且线程安全,但可能会造成资源浪费,因为即使单例未被使用,也会在类加载时创建。 `...
单例模式通常包含两个关键点:一是控制类的实例化过程,只允许创建一个实例;二是提供一个全局访问点,使得任何地方都可以获取到这个唯一的实例。传统的C++单例实现可能使用静态成员变量和私有构造函数来达到这一...
Java中实现单例模式的方法有很多种,每种方法都有其适用场景和优缺点。选择合适的实现方式需要根据实际需求和应用场景综合考虑。例如,如果程序启动时就需要单例对象,那么可以使用饿汉式;如果希望在真正需要时才...
3. 第三种形式,即双检查锁定(Double-Check Locking)模式,结合了前两种方法的优点。在实例化`Singleton`时,首先检查实例是否已经创建,只有在未创建时才会进行同步操作。同时,使用`volatile`关键字防止编译器...