单例模式:饿汉式vs懒汉式

单例模式是指,在代码运行时,保证某一个类只能被创建一个对象,不可以被创建第二次对象。

饿汉式:

1.先将类中的构造器私有化,用private修饰,防止在外界创建对象

例:

private Test(){}

2.在类中创建一个私有对象,用静态修饰,以便类中的静态方法调用(静态方法只能调用静态属性),并且只有这一个对象

例:

private static Test t = new Test();

3.在类中创建一个公有的静态方法(方便外界直接用类名调用),返回值为2中的对象,方法名一般为getInstance(实例化的意思)

public static Test getInstance(){
    return t;
}

4.在外界中不能创建对象,因为构造器私有化,但是可以用类名调用getInstance方法来调用类的唯一对象,并且即使不调用对象,只要类被加载,唯一对象就已经创建好了。这就是单例模式的饿汉式

懒汉式:

1.同样在类中创造私有化构造器,用private修饰,防止在外界创建对象

private Test(){}

 2.在类中定义一个私有化分静态对象,但是并不为它赋值,也就是不new,这是它的值默认为null

private static Test t;

 3.定义一个公有的静态getInstance方法,返回值同样为2中的对象,但是这次方法中要做一个判断,如果对象t为空,也就是t==null,那么就为这个对象赋值

public static Test getInstance(){
    if(t == null){
        t = new Test();
    }
    return t;
}

4.懒汉式是只有在调用方法时,才会创建对象。、

区别:

1.饿汉式和懒汉式的主要区别就是创建对象的时机不同。饿汉式只要类被加载就会创建对象实例化,而懒汉式只有在被使用时才会创建对象

2.饿汉式不存在线程安全问题,而懒汉式存在线程安全问题(同时有好几个线程加载时可能会冲突,同时创建好几个对象)

3.饿汉式存在浪费资源的可能,假如程序员没有使用实例化对象,那么饿汉式创建的对象就浪费了,而懒汉式是使用时才会创建对象,所以不存在这个问题。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值