单例模式

import org.junit.Test;
/*单例的设计模式:
    1.解决的问题:使得一个类只能够创建一个对象*/
public class TestSingleton {
    @Test
    public void testGetInstance() {
        Singleton s1 = Singleton.getInstance();
        Singleton s2 = Singleton.getInstance();
        System.out.println(s1.equals(s2));
    }
}

//只能创建Singleton的单个实例
class Singleton {
    /*
     * 饿汉式
     */
    /*//1.私有化构造器,使得在类的外部不能够调用此构造器
    private Singleton(){
        
    }
    //2.在类的内部创建一个类的实例
    private static Singleton singleton = new Singleton();
    //3.私有化此对象,通过公共的方法来调用
    //4.此公共的方法,只能通过类来调用,因为设置为static的,同时类的实例也必须为static声明的
    public static Singleton getInstance() {
        return singleton;
    }*/
    
    /*
     *懒汉式 :可能存在线程安全问题
     */
    private Singleton(){
        
    }
    
    private static Singleton singleton=null;
    
    public static Singleton getInstance() {
        if(singleton==null){
            singleton = new Singleton();
        }
        return singleton;
    }
    //典型的单例模式例子:java.lang.Runtime类
}

posted @ 2017-01-06 09:52  快乐留给你  阅读(137)  评论(0编辑  收藏  举报