单例模式
单例也就是单个一个实例,单例模式也就是在程序运行过程中,单例模式设计的类只会出现一个实例。因为创建对象都是要调用构造函数的,所以每一种单例模式的第一步都是将构造函数私有化。
懒汉模式
懒汉模式表示不会提前创建好对象的实例,而是在需要到此类对象时才去创建。
- 私有化构造函数,使其在外部无法创建对象。
- 提供对外的获得此类对象的接口(getA方法)。
- 创建一个静态的全局本类类型属性,之所以是静态的,是因为只会创建一次,只有一个空间。
- 为了防备外部直接调用静态的属性而获得此类对象,需要将全局属性私有化。
- 在对外的方法中,对静态的属性进行判断,如果此属性没有值,则表示是第一次索要本类对象,创建对象赋值给全局属性。如果此属性不是一个空的,证明不是第一次索要对象,此类对象已经创建过,则将原有的对象的地址返回。
//懒汉式
class A{
private static A a;
private A(){}
public static A getA(){
if(a == null){ //==号的作用是判断两个对象的地址是否相同
a = new A();
}
return a;
}
}
饿汉模式
在类加载时就创建好类的对象,在需要到实例属性时将已经创建好的实例进行返回。
-
私有化构造方法,使其在外部无法创建对象。
-
创建一个对外的接口(getB方法),用于获得本类的实例。
-
创建一个私有的静态的本类类型的引用,定义为常量,并赋值为本类的对象。
在调用“对外接口方法”时,静态的属性就将被赋值为本类的对象。
-
在对外接口方法中,返回静态的本类引用(b)。
//饿汉式
class B{
private final static B b = new B();
private B(){}
public static B getB(){
return b;
}
}