num01---单例模式

num01---单例模式

* 单例模式【创建型】

  

  - 单例模式的构造函数私有化,这也是真单例的标准。

  - 单例模式的真实应用场景:

    * 由于构造方法只执行一次,在构造方法中解析xml配置文件,可保证配置文件只被解析一次。当然,这种机制也可以在静态代码块中完成。
    * 单例模式的对象无法被垃圾回收器回收,所以通常使用单例模式来实现缓存机制。因为缓存是不希望被回收的。

  - 其实除了真单例之外,还存在假单例,例如:Servlet就是一个假单例,因为Servlet构造方法没有私有化,由于Servlet对象的生命周期
    由容器来管理,程序员无权干涉,所以Servlet对象也是一个单实例的。

 

  单例模式的类无法被继承。因为子类需要调用父类中的构造方法,单例模式的构造方法私有化(防止new对象),在子类中无法调用,所以单例模式的类型无法被继承。

 

1、饿汉式:(静态常量),类加载时创建对象

  

2、饿汉式(静态代码块)

   

 

   

3、懒汉式 (线程不安全)

   

 

   

 

 

4、懒汉式(线程安全,同步方法)

   

 

   

 

 

5、懒汉式(线程安全,同步代码块)

   

 

   这种方法其实连线程安全都无法保证,只要进入if  语句块中, 各个线程都还是要创建,这种方案其实错误。

  

 

 

6、双重检查,推荐,优秀

   

 

   

7、静态内部类,推荐使用

   

 

     

 

 8、枚举

    

 

     

 -------------------------------

  

    

 

 

----------------------------------

 JDK源码中单例模式: Runtime.class中,饿汉式

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值