一、单例模式

来源:互联网 发布:淘宝玉石拍卖 编辑:程序博客网 时间:2024/05/10 14:10

一、单例模式特点和应用场景

特点:

单例模式保证一个类有且仅有一个实例,并且提供一个访问实例的全局访问点。

应用场景:

u系统只需要一个实例的对象。

客户调用类的单个实例只允许使用一个公共访问点。

 

二、单例模式的饿汉和懒汉

先看下面的代码:

饿汉式代码:

懒汉式代码:

 

饿汉式是线程安全的,在类创建的同时就已经创建好一个静态的对象供系统使用,属于前期绑定,以后不再改变 。  

 

懒汉式优点是延时加载、 是在需要的时候才创建对象。缺点是应该用同步。如果在创建实例对象时不加上synchronized则会导致对对象的访问不是线程安全的。

 

前者速度快,后者速度慢。但后者可以加载其他的类,(也就是动态扩展)灵活性高。

 

看下面的代码有什么特点:

这样确保线程安全的同时,   比上面创建静态实例域的办法还有一个好处就是:  

SingletonHolder中可以使用静态方法替换静态域,   实现比较复杂的逻辑,   而不仅仅是new   Singleton()这样简单地调用构造方法.