您的位置 首页 java

Java单例模式的几种写法总结

饿汉式

写法一:静态常量实现

/**

* @desc 饿汉式(静态常量)

*/

public class Singleton1 {

private Singleton1(){}

private static final Singleton1 instance = new Singleton1();

public static Singleton1 getInstance(){

return instance;

}

}

写法二:静态代码块实现

/**

* @desc 饿汉式(静态代码块)

*/

public class Singleton2 {

private Singleton2(){}

private static Singleton2 instance;

static {

instance = new Singleton2();

}

public static Singleton2 getInstance(){

return instance;

}

}

懒汉式

写法一:线程不安全

/**

* 懒汉式(线程不安全)

*/

public class Singleton3 {

private Singleton3(){}

private static Singleton3 instance;

public static Singleton3 getInstance(){

if(instance==null){

instance = new Singleton3();

}

return instance;

}

}

写法二:线程安全,效率低

/**

* @desc 懒汉式(线程安全,效率低)

*/

public class Singleton4 {

private Singleton4(){}

private static Singleton4 instance;

public static synchronized Singleton4 getInstance(){

if(instance==null){

instance = new Singleton4();

}

return instance;

}

}

写法三:线程安全,效率高

/**

* 懒汉式(线程安全,效率高)

*/

public class Singleton5 {

private Singleton5(){}

//多线程保证可见性

private static volatile Singleton5 instance;

//双重检查

public static Singleton5 getInstance(){

if(instance==null){

synchronized(Singleton5.class){

if(instance==null){

instance = new Singleton5();

}

}

}

return instance;

}

}

静态内部类实现

/**

* @desc 静态内部类实现

*/

public class Singleton6 {

private Singleton6(){}

//静态内部类

private static class SingletonInstance{

private static final Singleton6 INSTANCE = new Singleton6();

}

public static Singleton6 getInstance(){

return SingletonInstance.INSTANCE;

}

}

枚举类实现

/**

* @desc 枚举类实现

*/

public class Singleton7 {

private Singleton7(){}

private enum SingletonInstance{

INSTANCE;

private final Singleton7 singleton;

SingletonInstance(){

singleton = new Singleton7();

}

private Singleton7 getInstance(){

return singleton;

}

}

public static Singleton7 getInstance(){

return SingletonInstance.INSTANCE.getInstance();

}

}

文章来源:智云一二三科技

文章标题:Java单例模式的几种写法总结

文章地址:https://www.zhihuclub.com/182398.shtml

关于作者: 智云科技

热门文章

网站地图