单例模式,确保一个类只有一个实例,并且提供一个全局访问点。
这算是设计模式中最最最简单的一个。就是说,我想创建一个类,这个类只允许一个实例,就能用这个模式。
什么场景下我只要并且只能有一个实例呢?如数据库连接、如打印机连接等。。
class Singleton{ //volatile强制每次都跟原来的成员变量进行比较,防止在线程中出错。 private volatile static Singleton uniqueInstance; //私有构造方法 private Singleton(){} //公共静态方法,使得通过类名就能调用它 public static Singleton getUniqueInstance(){ //双重锁保证线程安全 if(uniqueInstance==null){ synchronized(Singleton.class){ if(uniqueInstance==null){ uniqueInstance = new Singleton(); } } } return uniqueInstance; } public static void main(String []args){ Singleton s1 = Singleton.getUniqueInstance(); Singleton s2 = Singleton.getUniqueInstance(); if(s1.equals(s2)){ System.out.println("Equals."); } } }
浙公网安备 33010602011771号