课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
单例模式是程序员在学习java编程开发的时候都要求掌握的一种软件设计模式,下面我们就一起来了解一下,单例模式的特点与实现方法。
优点
提供了对实例的受控访问。
由于在系统内存中只存在一个对象,因此可以节约系统资源,对于一些需要频繁创建和销毁的对象单例模式无疑可以提高系统的性能。
允许可变数目的实例。
缺点
由于单例模式中没有抽象层,因此单例类的扩展有很大的困难。
单例类的职责过重,在一定程度上违背了“单一职责原则”。
滥用单例将带来一些负面问题,如为了节省资源将数据库连接池对象设计为的单例类,可能会导致共享连接池对象的程序过多而出现连接池溢出;如果实例化的对象长时间不被利用,系统会认为是垃圾而被回收,这将导致对象状态的丢失。
特点
构造方法私有。
内部对象私有。
提供返回对象的函数公有。
为什么使用静态内部类实现单例模式,可以保证线程安全?
加载一个类时,其内部类不会同时被加载。一个类被加载,当且仅当其某个静态成员(静态域、构造器、静态方法等)被调用时发生。
类的加载的过程是单线程执行的。它的并发安全是由JVM保证的。所以,这样写的好处是在instance初始化的过程中,由JVM的类加载机制保证了线程安全,而在初始化完成以后,不管后面多少次调用getInstance方法都不会再遇到锁的问题了。
饿汉式和懒汉式
饿汉式和懒汉式的区别?
在程序启动或单件模式类被加载的时候,单件模式实例就已经被创建。
饿汉式:在程序启动或单件模式类被加载的时候,单件模式实例就已经被创建。
懒汉式:当程序一次访问单件模式实例时才进行创建。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!更多内容请在707945861群中学习了解。