单例模式
1、保证系统中只有一个实例,不可创建多个,适用于系统中只使用一个对象就足够的情况,如任务管理器
2、可以节省内存空间
饿汉单例模式
package com.ruqi.design;
// 饿汉单例模式:提前加载好类,且只能创建一个类
public class SingleInstace {
// 1、将构造器私有化,保证不可创建多个实例
private SingleInstace(){
}
// 2、由于静态成员是加载类时提前加载,因此先创建一个类放到该静态成员方法
public static SingleInstace instace = new SingleInstace();
public static void main(String[] args) {
// 3、使用该实例,无论在哪里使用,对象地址都是一样的
SingleInstace s = SingleInstace.instace;
SingleInstace s1 = SingleInstace.instace;
System.out.println("结果是true");
System.out.println(s == s1);
}
}
懒汉单例模式
package com.ruqi.design;
// 懒汉单例模式:需要时才创建实例,且只能创建一个类
public class SingleInstace {
// 1、将构造私有化,保证不可创建多个实例
private SingleInstace(){
}
// 2、由于静态成员,后续存放实例,并且将其私有化,避免直接调用该成员
private static SingleInstace instace;
public static SingleInstace getInstace(){
if (instace == null){
instace = new SingleInstace();
}
return instace;
}
public static void main(String[] args) {
SingleInstace s = SingleInstace.getInstace();
SingleInstace s1 = SingleInstace.getInstace();
System.out.println(s);
System.out.println(s1);
}
}