单例模式应该是设计模式中最容易理解也是用得最多的一种模式了,同时也是面试的时候最常被问到的模式。
1. 单例模式的定义
单例模式指的是一个类中在任何情况下都绝对只有一个实例,并且提供一个全局访问点。
2. 单例模式的应用场景
单例模式的应用非常广泛,如数据库中的连接池、J2EE中的ServletContext和ServletContextConfig、Spring框架中的ApplicationContext等等。然而在Java中,单例模式还可以保证一个JVM中只存在一个唯一的实例。
单例模式的应用场景主要有以下几个方面:
- 当需要频繁创建一些类的时候,使用单例可以降低系统的内存压力,减少GC(垃圾回收) ;
- 当某些类创建实例时候需要占用的资源较多,或者实例化过程耗时比较长,且经常使用的情况;
- 当存在频繁访问数据库或者文件的对象;
- 当对于一些控制硬件级别的操作,或者从系统上来讲应当是单一控制逻辑的操作,是不允许存在多个实例的,否则玩完;
3. 单例模式的优缺点
3.1 单例模式的优点
- 单例模式可以保证内存中只有一个实例对象,从而会减少内存的开销;
- 单例模式可以避免对资源的多重占用;
- 单例模式设置全局访问点,可以起到优化和共享资源的访问的作用;
3.2 单例模式的缺点
- 扩展难, 因为单例模式通常是没有接口的啊,如果想要扩展,那么你唯一途径就是修改之前的代码,所以说单例模式违背了开闭原则;
- 调试难,因为在并发测试中,单例模式是不利于代码的调试的,单例中的代码没有执行完ÿ