单例设计模式:保证类在内存中只有一个对象。
如何保证类在内存中只有一个对象呢?
1、构造方法私有,在类的外部无法调用该类的构造方法
2、类中声明该类的成员,必须是静态的
3、提供静态方法将该成员输送到外部
饿汉式(线程安全)
/**
* * @author Allein
* * @date 2021/10/19 21:50
* 饿汉式
*/
public class Singleton1 {
public static void main(String[] args){
A a1 = A.getInstance();
A a2 = A.getInstance();
System.out.println(a1 == a2);
}
}
class A{
private static A a = new A();
public static A getInstance(){
return a;
}
private A(){
}
}
懒汉式(线程不安全)
/**
* * @author Allein
* * @date 2021/10/19 21:54
* 懒汉式;线程不安全,可能会创建多个对象
*/
public class Singleton2 {
public static void main(String[] args) {
B b1 = B.getInstance();
B b2 = B.getInstance();
System.out.println(b1 == b2);
}
}
class B{
private static B b;
public static B getInstance(){
if (b == null){
b = new B();
}
return b;
}
}