Java设计模式——单例模式

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 }
原文地址:https://www.cnblogs.com/shamao/p/10918191.html