单例模式:类只能有一个实例,程序为该实例提供全局访问点,适合于需要节约系统资源的环境下,和较为简单的程序架构。
单例模式又有饿汉式和懒汉式两种:根据创建对象的时间不同而区别
饿汉式:
public class A{
public static A a = new A();
private A(){}
public static A getInstance (){return a;}
}
懒汉式:
public class A{
public static A a=null;
private A(){}
public static A getInstance(){
if(a == null){
a = A();
}
return a;
}
}
饿汉式是线程安全的,在类的一开始就已经在全局变量存储区创建了对象;而懒汉式则是不安全的,需要判断一下才能创建,否则访问类的方法的时候会发生未知的错误。
推荐使用饿汉式。
单例模式适合单一对象被频繁创建、销毁的环境中使用,它的优点是使用静态变量保存因此速度很快,单个实例使用也会消耗较少的资源,缺点则是没有接口,不能继承(有静态方法和变量,破坏了封装)