单例设计模式
- 就是采取一定的方法保证在整个软件系统中,对某个类只能存在一个对象实例
- 测试类
public class Pattern1 {
public static void main(String[] args){
Bank bank1 = Bank.getInstance();
Bank bank2 = Bank.getInstance();
System.out.println(bank1 == bank2); // true
Bank2 bank3 = Bank2.getInstance();
Bank2 bank4 = Bank2.getInstance();
System.out.println(bank3 == bank4); // true
}
}
- 饿汉式-类加载的时候实例化
class Bank{
// 1. 私有化类的构造器
private Bank(){
}
// 2. 内部创建类对象
// 4.静态方法只能调静态变量 所以声明为静态
private static Bank instance = new Bank();
// 3.提供公共的静态方法,返回类对象
public static Bank getInstance(){
return instance;
}
}
- 懒汉式-使用的时候实例化
class Bank2{
// 1. 私有化类的构造器
private Bank2(){
}
// 2. 内部创建类对象-没有初始化
// 4.静态方法只能调静态变量 所以声明为静态
private static Bank2 instance = null;
// 3.提供公共的静态方法,返回类对象
public static Bank2 getInstance(){
if (instance==null)
instance = new Bank2();
return instance;
}
}
两种方式的比较
- 饿汉式:
-
优:线程安全
-
缺:对象加载时间过长
-
- 懒汉式:
-
优:延迟对象创建,不用不创建
-
缺:线程不安全->加线程锁
-
懒汉式优化:使用同步机制将单例模式中的懒汉式改写为线程安全的