首先说下单例设计模式
单例模式:保证整个应用中某个实例有且只有一个。
有些对象我们只需要一个,
比如:配置文件,工具类,线程池,缓存,日志对象等。
如果创造出多个实例,就会导致许多问题,不如占用过多资源,不一致的结果等,
应用场合:有些对象只需要一个就足够了,如古代皇帝
作用:保证整个应用程序中某个实例有且只有一个。
类型:饿汉式,懒汉式。
下面用代码简单介绍下饿汉式和懒汉式
饿汉式
懒汉式
饿汉式和懒汉式的区别
所谓“懒汉式”与“饿汉式”的区别,是在与建立单例对象的时间不同。
懒汉式:是在你真正用到的时候才去建这个单例对象:(用时才创建)
饿汉式:是在不管你用的用不上,一开始就建立这个单例对象 (用不用都先创建)
一:区别
饿汉式:
1,特点:饿汉式加载类时比较慢,但运行时获取对象的速度比较快。
在类创建的同时就已经创建好一个静态的对象供系统使用,以后不再改变
2,线程安全:线程安全
1,特点:懒汉式加载类时比较快,但运行时获取对象的速度比较慢
2,线程安全:线程不安全。
二:优缺点对比
优点是延时加载实例(对象)、 是在需要的时候才创建对象。缺点是应该用同步。
如果在创建实例对象时不加上synchronized则会导致对对象的访问不是线程安全的。
饿汉式
饿汉式是线程安全的,在类创建的同时就已经创建好一个静态的对象供系统使用,以后不在改变
推荐使用饿汉式