您的位置:首页 > 编程语言 > Java开发

Java中单例模式实现

2017-07-22 17:55 99 查看
单例模式是Java编程中应用最多的一种设计模式,现在个人将单例模式经常使用到的几种实现方式,简单列举一下:

1、 立即加载模式或者说恶汉模式

public class SingleInstance1 {

//立即加载模式或者说恶汉模式,即在调用方法前实例已经被创建
public static final SingleInstance1 singleInstance1 = new SingleInstance1();

private SingleInstance1(){}

public static SingleInstance1  getInstance(){
return singleInstance1;
}
}


2、延迟加载模式或者懒汉模式

其也称之为双重检查锁机制(DCL)

public class SingleInstance2 {

//延迟加载或者懒汉模式
//使用双重检测机制来解决问题,既保证了不需要同步代码的异步执行性,有保证了单例的效果
public volatile static SingleInstance2 singleInstance2;

private SingleInstance2(){}

public static SingleInstance2 getSingleInstance(){
try {

if(singleInstance2==null){
synchronized(SingleInstance2.class){
if(singleInstance2==null){
singleInstance2 = new SingleInstance2();
}
}
}

}catch (Exception e){
e.printStackTrace();
}
return singleInstance2;
}
}


3、 静态内部类实现机制

使用静态内部类同样能够实现DCL的效果。

public class SingleInstance3 {

public static class SingleInstance3Handler{
private static SingleInstance3 singleInstance3 =  new SingleInstance3();
}
//使用静态内置类实现DCL同样的效果
private SingleInstance3(){}

public static SingleInstance3 getInstance(){
return SingleInstance3Handler.singleInstance3;
}
}


4、Static静态代码块实现

public class SingleInstance4 {
private SingleInstance4(){}

public static SingleInstance4 singleInstance4;

static {
singleInstance4 = new SingleInstance4();
}

public static SingleInstance4 getInstance(){
return singleInstance4;
}
}


5、枚举类实现

public class MySingleInstance {

public enum SingleInstance5{

connectionFactory;

private Object object;

private SingleInstance5() {
object = new Object();
}

public Object getObject(){
return object;
}

}

public static Object getObject(){
return SingleInstance5.connectionFactory.getObject();
}

}


以上是Java语言经常使用到的几种实现方式,这里仅仅是简单列举了一下,当然其他语言也同样能够实现,原理是相同的。以上三种实现方式在多线程的环境条件下,能够是线程安全的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java