设计模式-单利模式


饿汉模式


public class Signleton {
//1.不能让外部直接获得类实例  所有要将构造方法私有化
private Signleton(){

}

//2.创建类的唯一实例
private  static Signleton instance = new Signleton(); 

//3.外部用过唯一方法获取唯一实例
public static Signleton getInstance(){
    return instance;
}

}

然后测试

    public static void main(String[] args) {
    Signleton signleton = Signleton.getInstance();
    Signleton signleton1 = Signleton.getInstance();

    System.out.println(signleton == signleton1);

}

true

结果为true 表明我们成功了

因为是静态的所以不管你是否用了没 当类加载它也会跟着一起加载
提前加载,提前吃饭 所以叫做饿汉模式

懒汉模式

懒汉模式与饿汉模式的步骤基本类似

public class Signleton2 {
//1.将构造方法私有化
private Signleton2(){

}

//2.声明一个实例
private static Signleton2 instance;

//3.声明一个可以获得实例的方法
public Signleton2 getInstance(){
    if(instance == null){
        instance = new Signleton2();
    }
    return instance;
}
}

测试

public static void main(String[] args) {
    Signleton signleton = Signleton.getInstance();
    Signleton signleton1 = Signleton.getInstance();

    System.out.println(signleton == signleton1);

    Signleton2 signleton3 = Signleton2.getInstance();
    Signleton2 signleton4 = Signleton2.getInstance();

    System.out.println(signleton3 == signleton4);
}

true
true

依然提供用于获取实例对象的静态公共get方法:
get方法内进行判断,如果实例为空则new一个实例,再返回,如果不为空则直接返回该实例。只有第一次调用该公有静态的get函数时该单例对象才被创建。因而称之为懒汉模式。


懒汉模式 pk 饿汉模式

饿汉单例模式加载类时比较慢,获取对象速度快。线程是安全的。
懒汉单例模式加载快,获取对象速度相对慢。线程是不安全的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值