天天看点

java二十三种设计模式----(二)单例设计模式 :“懒汉式”与“饿汉式”的区别 为什么通常使用饿汉式

首先说下单例设计模式

单例模式:保证整个应用中某个实例有且只有一个。

有些对象我们只需要一个,

比如:配置文件,工具类,线程池,缓存,日志对象等。

如果创造出多个实例,就会导致许多问题,不如占用过多资源,不一致的结果等,

应用场合:有些对象只需要一个就足够了,如古代皇帝

作用:保证整个应用程序中某个实例有且只有一个。

类型:饿汉式,懒汉式。

下面用代码简单介绍下饿汉式和懒汉式

饿汉式

懒汉式

饿汉式和懒汉式的区别

 所谓“懒汉式”与“饿汉式”的区别,是在与建立单例对象的时间不同。  

 懒汉式:是在你真正用到的时候才去建这个单例对象:(用时才创建)

 饿汉式:是在不管你用的用不上,一开始就建立这个单例对象 (用不用都先创建)

一:区别 

饿汉式:

1,特点:饿汉式加载类时比较慢,但运行时获取对象的速度比较快。

                    在类创建的同时就已经创建好一个静态的对象供系统使用,以后不再改变

2,线程安全:线程安全

1,特点:懒汉式加载类时比较快,但运行时获取对象的速度比较慢

2,线程安全:线程不安全。

二:优缺点对比

优点是延时加载实例(对象)、 是在需要的时候才创建对象。缺点是应该用同步。

如果在创建实例对象时不加上synchronized则会导致对对象的访问不是线程安全的。

 饿汉式

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

推荐使用饿汉式

继续阅读