一.单例模式三个特点
1.该类只有一个实例 ----> 1.私有,静态的自身实例
2.该类自行创建实例 ----> 2.私有的构造方法
3.向整个系统公开这个实例对象 ----> 3.公开的静态方法
二.单例模式的种类
1.HangerSingleton饿汉式
class Singleton {
private static Singleton singleton = new Singleton();
private Singleton(){
}
public static Singleton getInstance(){
return singleton;
}
}
2.LazzySingleton懒汉式
class Singleton {
private static Singleton singleton = null;
private Singleton(){
}
public static Singleton getInstance() {
if(singleton==null){
singleton = new Singleton();
}
return singleton;
}
}
此单例模式只适合单线程,在多线程中使用sychronized关键字来避免线程并发问题则:
class Singleton {
private static Singleton singleton = null;
private Singleton(){
}
public static sychronized Singleton getInstance() {
if(singleton==null){
singleton = new Singleton();
}
return singleton;
}
}