Java的单例模式

  所谓单例模式,就是整个应用中会让某个实例只有一个。

  单例模式有饿汉模式和懒汉模式两种,懒汉模式加载类时比较快,因为加载类的时候不会使用构造器,而饿汉模式加载类时就会直接使用构造器获取一个对象。但是这样运行时获取对象的速度饿汉模式就会更快些,因为他已经加载好了,直接获取即可。

MySingleton.java

package com.muggle.MySin;
//恶汉模式
public class MySingleton {
    private MySingleton() {
        // TODO Auto-generated constructor stub
    }
    
    private static MySingleton instance=new MySingleton();
    
    public static MySingleton getInsatance() {
        return instance;
    }
}


MySingleton2.java
package com.muggle.MySin;
//懒汉模式
public class MySingleton2 {
    private  MySingleton2() {
        // TODO Auto-generated constructor stub
    } 
    
    private static MySingleton2 instance;
    
    public static MySingleton2 getInstance() {
        if(instance==null) {
            instance=new MySingleton2();
        }
        return instance;
    }
    
    
}


TestDrive.java
package com.muggle.MySin;

public class TestDrive {

    public static void main(String[] args) {
        MySingleton s1=MySingleton.getInsatance();
        MySingleton s2=MySingleton.getInsatance();
        if(s1==s2) {
            System.out.println("------这是饿汉模式!----");
        }
        System.out.println(s1);
        System.out.println(s2);
        
        MySingleton2 s3=MySingleton2.getInstance();
        MySingleton2 s4=MySingleton2.getInstance();
        if(s3==s4) {
            System.out.println("------这是懒汉模式!----");
        }
        System.out.println(s3);
        System.out.println(s4);

    }

}

输出如下:

------这是饿汉模式!----
com.muggle.MySin.MySingleton@70dea4e
com.muggle.MySin.MySingleton@70dea4e
------这是懒汉模式!----
com.muggle.MySin.MySingleton2@5c647e05
com.muggle.MySin.MySingleton2@5c647e05

  代码运行后发现s1和s2,s3和s4时同一个对象,也是实现了单例模式。

原文地址:https://www.cnblogs.com/mugglean/p/8887869.html