设计模式-单例模式(饿汉式,懒汉式)

来源:互联网 发布:c语言写的游戏 编辑:程序博客网 时间:2024/06/04 18:51

饿汉式
将对象的实现提前准备好,对象指向的内存只能有一个。

public class Singlection1 {    /**     * 构造方法私有     */    private Singlection1(){    }    /**     * 饿汉式单例实现     * 将对象的实现提前准备好     */    private static final Singlection1 single1 = new Singlection1() ;    /**     * 静态工厂     */    public static Singlection1 getInstance() {        return single1;    }}
public class Test {    public static void main(String[] args) {        Singlection1 single1 = Singlection1.getInstance();        Singlection1 single2 = Singlection1.getInstance();        System.out.println("饿汉式对象指向的内存是同一个:" + (single1==single2));    }}

输出:饿汉式对象指向的内存是同一个:true


懒汉式:只在第一次调用时实例化,后面不会再实例化

public class Singlection2 {    /**     * 构造方法私有     */    private Singlection2(){    }    /**     * 懒汉式单例实现 只在第一次调用时实例化,后面不会再实例化     */    private static  Singlection2 single;    /**     * 静态工厂     * synchronized 线程同步     */    public synchronized static Singlection2 getInstance() {        if(single == null){            single = new Singlection2();        }        return single;    }}
public class Test {    public static void main(String[] args) {                Singlection2 single3 = Singlection2.getInstance();        Singlection2 single4 = Singlection2.getInstance();        System.out.println("懒汉式对象指向的内存是同一个:" + (single3==single4));     }}

输出:懒汉式对象指向的内存是同一个:true

0 0
原创粉丝点击