Java设计模式——单例模式
摘要:本文主要介绍了Java设计模式中的单例模式。
部分内容来自以下博客:
https://www.cnblogs.com/zuoxiaolong/p/pattern2.html
什么是单例模式
所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例。
我们单例模式所期待的目标或者说使用它的目的,是为了尽可能的节约内存空间,减少无谓的GC消耗,并且使应用可以正常运作。
我稍微总结一下,一般一个类能否做成单例,最容易区别的地方就在于,这些类,在应用中如果有两个或者两个以上的实例会引起错误,又或者我换句话说,就是这些类,在整个应用中,同一时刻,有且只能有一种状态。
饿汉式
饿汉式会在访问Singleton的其他静态域的时候,就进行实例的初始化,而事实是可能我们从始至终就没有使用这个实例,造成内存的浪费。
不过在有些时候,直接初始化单例的实例也无伤大雅,对项目几乎没什么影响,比如我们在应用启动时就需要加载的配置文件等,就可以采取这种方式去保证单例。
1 public class Singleton { 2 // 一个静态实例 3 private static Singleton singleton = new Singleton(); 4 // 私有化构造函数 5 private Singleton() {} 6 // 提供一个公有的静态方法返回一个静态的单一实例 7 public static Singleton getInstance() { 8 return singleton; 9 } 10 }
懒汉式
懒汉式的方式不会在一开始就创建实例,只有在用到的时候才会创建实例。
1 public class Singleton { 2 // 一个静态实例 3 private static Singleton singleton; 4 // 私有化构造函数 5 private Singleton() {} 6 // 提供一个公有的静态方法返回一个静态的单一实例 7 public static Singleton getInstance() { 8 if (singleton == null) { 9 singleton = new Singleton(); 10 } 11 return singleton; 12 } 13 }