Java :单例模式

    单例模式

目录

    单例模式

            什么是单例模式?

            我们如何去使用?

            两种模式的存在的问题:

                                                            


            什么是单例模式?

                单例模式,属于创建类型的一种常用的软件设计模式。通过单例模式的方法创建的类在当前进程中只有一个实例(根据需要,也有可能一个线程中属于单例,如:仅线程上下文内使用同一个实例)——摘自百度百科。

            我们如何去使用?

                饿汉式:

public class Main {
    public static void main(String[] args) {
        hungry hungry1 = hungry.getHungry();
    }
}
class hungry{
    private static hungry hungry = new hungry();
    private hungry(){
    }
    public static hungry getHungry() {
        return hungry;
    }
}

                 懒汉式:

public class Main {
    public static void main(String[] args) {
        lazy lazy1 = lazy.getLazy();
    }
}
class lazy{
    private static lazy lazy1;
    private lazy(){
    }

    public static lazy getLazy() {
        if (lazy1==null){
            lazy1 = new lazy();
        }
        return lazy1;
    }
}

            两种模式的存在的问题:

                饿汉式:

                        饿汉式之所以叫饿汉式,就是它不管三七二十一,着急的new了一个对象(可能你只是调用一下hungry的静态属性,它也创建了一个hungry的对象),可能存在资源浪费问题。

                懒汉式:

                        懒汉式之所以叫懒汉式,就是它的对象只会创建一次,循环使用,而且是你需要时才创建,不存在调用静态属性对象也被创建的问题(lazy lazy1 不会调用构造器),但是当lazy1为null时,多线程同时涌入的话会存在线程安全问题。

                
    
                                        

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YHanJG

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值