`
have23
  • 浏览: 44373 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

singleton模式的两种方法

    博客分类:
  • java
 
阅读更多

方法一:

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);
}
}
 

 

分享到:
评论

相关推荐

    C++ 实现的singleton 模式

    Singleton模式是一种常用的软件设计模式,它保证一个类只有一个实例,并提供一个全局访问点。这种模式在很多场景下都非常有用,例如管理共享资源,如数据库连接池,或者确保某个对象在整个系统中的唯一性。下面我们...

    Singleton两种代码实现

    单例模式,Singleton两种代码实现。一般实现方法,泛型实现方法(推荐)

    singleton设计模式java实现及对比

    这种方法结合了前两种方式的优点,既延迟初始化又避免了不必要的同步。 ```java public class Singleton { private volatile static Singleton instance; private Singleton() {} public static Singleton ...

    Singleton模式

    为了解决懒汉式的线程安全问题,可以采用以下两种方式: - **双重检查锁定(Double-Checked Locking)**:在多线程环境下,只有当instance为null时才进行同步,降低了同步的开销。 ```java public class Singleton ...

    singleton单例模式1

    单例模式有两种实现方式:饿汉式和懒汉式。 饿汉式是指在类初始化时直接创建实例对象,不管你是否需要这个对象都会创建。例如: ``` Class persion{ Public static final persion INNER; Static { INNER=new ...

    单例模式Singleton

    在Java中,单例模式的实现方式多种多样,但常见的有饿汉式(Eager Initialization)和懒汉式(Lazy Initialization)两种。 1. **饿汉式**: 饿汉式是在类加载时就完成了初始化,所以类加载比较慢,但获取对象的...

    Singleton 单件(创建型模式)

    在Java中,通常我们采用懒汉式和饿汉式两种方式实现 Singleton。 1. **懒汉式 Singleton**:延迟初始化,只有在第一次调用 getInstance 方法时才创建实例。这种方式线程不安全,如果在多线程环境下可能会创建多个...

    Singleton 单例模式的介绍以及解析

    单例模式的核心在于限制类的实例化,通常通过私有化构造函数和静态工厂方法来实现。当类的实例第一次被请求时,会创建一个对象并将其存储在一个静态变量中,后续的请求都会返回这个已经创建的对象,而不是创建新的...

    单例模式 Singleton Pattern

    - **设备管理**:例如,两台打印机不能同时打印同一个文件,需要通过单例模式来协调。 #### 优缺点 - **优点**: - 内存优化:在内存中只有一个实例,减少内存开销。 - 资源保护:避免对资源的多重占用。 - **...

    Python使用metaclass实现Singleton模式的方法

    在Python编程中,Singleton模式是一种设计模式,它保证一个类只有一个实例,并提供一个全局访问点。这个模式在某些场景下非常有用,例如管理共享资源、配置对象或者数据库连接。在Python中,通常通过元类(metaclass...

    Java设计模式之单态模式(Singleton模式)介绍

    单态模式(Singleton模式)是Java设计模式中的一种,它的主要目标是确保一个类在整个应用程序中只有一个实例存在。这种模式的应用场景广泛,特别是在需要全局共享的资源管理、配置中心、日志服务等场合非常常见。 ...

    Singleton Pattern 源码

    实现单例模式通常有两种主要方法:饿汉式和懒汉式。 1. 饿汉式单例: 这种方式在类加载时就完成了初始化,因此线程安全。但是由于类加载较早,即使在单例不需要时也创建了对象,可能造成内存浪费。 ```java ...

    C#面向对象设计模式纵横谈(2):Singleton 单件(创建型模式) (Level 300)

    在C#中实现Singleton模式,通常有两种常见的方法:懒汉式和饿汉式。 1. **懒汉式(线程不安全)** 这是最直观的实现方式,首次使用时才创建实例。但这种实现方式在多线程环境下可能导致多个线程同时创建实例,破坏...

    设计模式总结-模板设计模式,单例模式(singleTon)

    在给出的部分代码中,我们可以看到一个抽象类`GenericServlet`被定义,其中包含了两个抽象方法`doGet`和`doPost`以及一个具体的方法`service`。这个抽象类充当了模板的角色,而`doGet`和`doPost`则是在不同场景下...

    22种开发模式

    下面是 Singleton 单类模式的两种实现方式的代码示例: 饱汉单类模式: ```java public class Singleton1 { // 饱汉模式,声明时就创建实例对象 public static final Singleton1 instance = new Singleton1(); /...

    c sharp设计模式

    Singleton 模式的模型图可以分为逻辑模型图和物理模型图两部分。 逻辑模型图 在逻辑模型图中,Singleton 模式的类图结构可以表示为: * Singleton 类:该类负责提供一个全局的访问点,并保证只有一个实例。 * ...

    Java面向对象(高级)- 单例(Singleton)设计模式

    单例模式有两种常见的实现方式:饿汉式和懒汉式。 - 饿汉式(Eager Initialization):在类加载时就创建了单例对象,这种方式简单且线程安全,但可能会造成资源浪费,因为即使单例未被使用,也会在类加载时创建。 `...

    SingleTon的模板(template)化应用

    单例模式通常包含两个关键点:一是控制类的实例化过程,只允许创建一个实例;二是提供一个全局访问点,使得任何地方都可以获取到这个唯一的实例。传统的C++单例实现可能使用静态成员变量和私有构造函数来达到这一...

    JAVA单例模式的几种实现方法

    Java中实现单例模式的方法有很多种,每种方法都有其适用场景和优缺点。选择合适的实现方式需要根据实际需求和应用场景综合考虑。例如,如果程序启动时就需要单例对象,那么可以使用饿汉式;如果希望在真正需要时才...

    singleton、回调函数、sizeof等小结.docx

    3. 第三种形式,即双检查锁定(Double-Check Locking)模式,结合了前两种方法的优点。在实例化`Singleton`时,首先检查实例是否已经创建,只有在未创建时才会进行同步操作。同时,使用`volatile`关键字防止编译器...

Global site tag (gtag.js) - Google Analytics