设计模式-单例模式

来源:互联网 发布:hbo美剧推荐知乎 编辑:程序博客网 时间:2024/05/29 07:25

java 实现单例方式

新建单例类 Single

public class Single {    private Single() {    }    /**     *      * 单例模式的实现:饿汉式,线程安全 但效率比较低     */     private static final Single single= new Single();      public static Single getInstance(){           return single;       }    } 
public class Single {    private Single() {    }     /**     * 单例模式的实现:饱汉式,非线程安全 效率低下     *      */     private static Single single;      public static Single getInstance(){            if(single == null){            single = new Single();         }              return single;       }     }
public class Single {    private static Single single;     private Single() {    }    /**     * 单例模式的实现:饱汉式,线程安全  效率低下     *      */        private static Single single;       public static synchronized Single getinstance(){            if(single ==null){                single=new Single();            }         return single;        }}
public class Single {    private static Single single;     private Single() {    }    /**     * 单例模式的实现:饱汉式,线程安全  效率高     *      */    private static Single single;public static Single getInstance(){        if(single == null){                synchronized(Single.class){                    if(single == null){                        single = new Single();                    }                }        }        return single;    }}
public class Single {    private  volatile  static Single single=null;     private Single() {    }    /**     * 单例模式的实现:饱汉式,线程安全  效率高     *      */    private static Single single;public static Single getInstance(){        if(single == null){                synchronized(Single.class){                    if(single == null){                        single = new Single();                    }                }        }        return single;    }}
/** * 静态内部类 优点:加载时不会初始化静态变量INSTANCE,因为没有主动使用,达到Lazy loading */class Single {    private static class SingletonHolder{        private final static  Single INSTANCE=new Single ();    }       private Single (){}    public static Single getInstance(){        return SingletonHolder.INSTANCE;    }}
/** * 这种方法在功能上与公有域方法相近,但是它更加简洁,无偿提供了序列化机制,绝对防止多次实例化,即使是在面对复杂序列化或者反射攻击的时候。虽然这种方法还没有广泛采用,但是单元素的枚举类型已经成为实现Singleton的最佳方法 */public enum SingletonC implements Serializable{    INSTANCE;    private String field;    public String getField() {        return field;    }    public void setField(String field) {        this.field = field;    }}
0 0
原创粉丝点击