
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
单例模式的应用是许多软件编程开发程序员在开发软件的时候会经常用到的一个设计模式,而本文我们就通过案例分析来简单了解一下,单例模式实现方法都有哪些。
1、饿汉模式
饿汉模式也叫预加载模式,它是在类加载时直接创建并初始化单例对象,所以它并不存在线程安全的问题。它是依靠ClassLoader类机制,在程序启动时只加载一次,因此不存在线程安全问题。
优点:实现简单、不存在线程安全问题。
缺点:类加载时就创建了对象,创建之后如果没被使用,就造成了资源浪费的情况。
2、懒汉模式
懒汉模式和饿汉模式正好是相反的,所谓的懒汉模式也就是懒加载(延迟加载),指的是它只有在一次被使用时,才会被初始化。
懒汉模式使用的是双重效验锁和volatile来保证线程安全的,从上述代码可以看出,无论是饿汉模式还是懒汉模式,它们的实现步骤都是一样的:
创建一个私有的构造方法,防止其他调用的地方直接new对象,这样创建出来的对象就不是单例对象了。
创建一个私有变量来保存单例对象。
提供一个公共的方法返回单例对象。
懒汉模式相比于饿汉模式来说,不会造成资源的浪费,但写法要复杂一些。
3、静态内部类
静态内部类既能保证线程安全,又能保证懒加载,它只有在被调用时,才会通过ClassLoader机制来加载和初始化内部静态类,因此它是线程安全的。
4、枚举
枚举也是在一次被使用时,才会被Java虚拟机加载并初始化,所以它也是线程安全的,且是懒加载的。
5、总结
单例模式适用于经常被访问的对象,或是创建和销毁需要调用大量资源和时间的对象,使用单例模式可以避免频繁创建和销毁对象。单例模式的常用实现方法有4种:饿汉模式、懒汉模式、静态内部类和枚举。从写法的简洁性、线程安全性和代码的易懂性等方面综合来看,武汉达内比较推荐使用枚举或懒汉模式来实现单例模式。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。