单例模式是前人经过无次数实践验证总结出来,设计过程中反复的使用,可以解决很多特定问题的设计方法;
饿汉模式(预加载模式:静态内部类)
优点:在类加载的时候,就创建好对象放到静态区了,获取对象效率高。线程安全
缺点:类加载效率低,并且static修饰的成员占用资源。
public class Singleton {
private static final Singleton instance = new Singleton();
private Singleton() {}
public static Singleton getSingleton() {
return instance;
}public void testSingleton(){
Singleton s = Singleton.getInstanc();
Singleton s2 = Singleton.getInstanc();
System.out.println(i == i2);
}
}
懒汉模式(双重校验锁)
public Singleton (){
private static Singleton instance;
private Singleton (){}
public static Singleton getInstance(){
if(instance == null){
synchronized(Singleton.class){
if(instance == null){
instance = new Singleton();
}
}
}
return instance ;
}
public void testSingleton(){
Singleton s = Singleton.getInstanc();
Singleton s2 = Singleton.getInstanc();
System.out.println(i == i2);
}
}
优点:节省资源,在需要的时候创建对象。
缺点:线程不安全。获取对象的时候,效率低