一、单例模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点。
二、代码实例
public class Singleton { private static Singleton singleton; private Singleton(){} public static Singleton getInstance(){ if(singleton == null){ singleton = new Singleton(); } return singleton; } } public class SingletonDouSync { private static SingletonDouSync singletonDouSync; private SingletonDouSync(){} public static SingletonDouSync getInstance(){ if(singletonDouSync == null){ synchronized (SingletonDouSync.class){ if(singletonDouSync == null){ singletonDouSync = new SingletonDouSync(); } } } return singletonDouSync; } } public class TestSingleton { @Test public void test1() { Singleton s1 = Singleton.getInstance(); Singleton s2 = Singleton.getInstance(); // Singleton s = new Singleton(); 报错 if (s1 == s2) { System.out.println("两个对象是同一个"); } else { System.out.println("两个对象不一样"); } } @Test public void test2(){ SingletonDouSync singletonDouSync1 = SingletonDouSync.getInstance(); SingletonDouSync singletonDouSync2 = SingletonDouSync.getInstance(); if(singletonDouSync1 == singletonDouSync2){ System.out.println("两个对象是同一个"); }else { System.out.println("两个对象不一样"); } } }
三、分类
懒汉单例类:在第一次被引用时,才会将自己实例化。
饿汉单例类:在自己被加载时就将自己实例化。