单例模式,常用在系统中唯一对象时,保证系统中有且只有一个这类型对象,常用技巧是将构造方法私有化,使外部无法new出对象来。单例模式又分为懒汉式单例与饿汉式单例,其中懒汉式单例在编写过程中可能会出现并发问题,需要注意,在此留下代码以作备忘。
饿汉式单例
package cn.vongo.pattern.singleton;
import java.util.HashSet;
import java.util.Set;
/**
* 饿汉式单例
*/
public class HungrySingleton {
private static HungrySingleton hungrySingleton = new HungrySingleton();//或者(直接放在static里面初始化)
private HungrySingleton(){}
public static HungrySingleton getInstance(){
return hungrySingleton;
}
}
懒汉式单例
package cn.vongo.pattern.singleton;
/**
* 懒汉式单例
*/
public class LazySingleton {
private static LazySingleton lazySingleton = null;
private LazySingleton(){}
public static LazySingleton getInstance(){
if(lazySingleton == null){
synchronized (LazySingleton.class){
if(lazySingleton == null){
lazySingleton = new LazySingleton();
}
}
}
return lazySingleton;
}
}