单例模式:

无法通过new关键字来创建一个新的对象,构造方法为 private,提供一个创建新对象的方法

注意:

1,单例类只能有一个实例

2,单例类必须 创建属于自己的一个事例实例

3,单例类必须创建构造实例的方法

这样做的目的是保证一个类仅有一个实例

 

下面介绍一下单例模式的写法

1饿汉模式

public class singleton{
    private static singleton instance =  new singleton();
    private singleton(){};
    public static singleton getInstance(){
        return instance;
    }
}

饿汉模式的另一种写法

public class singleton{
    private singleton instance = null;
    static{
    instance = new sinleton();
    }
    public static singleton getInstance(){
        return this.instance;
    }
}

2 懒汉模式

public class singleton{
    private singleton instance ;
    private singleton(){};
    public static Synchronized singleton getInstance(){
    if(instance==null){
    instance = new singleton();
    }
    return instance;
    }
}

如果不加 synchronized 方法的话,则程序在多线程时无法使用,线程不安全。

     3.静态内部类(当一个类被创建的时候,其中静态类不会呗 主动呗加载,而他其中的成员变量会被加载)

        1. public class singleton{
              private static singletonHolder{
               private static sinleton  instance =  new singleton();
              }
              private singleton(){};
              public static  singleton getInstance(){
              return sinletonHolder.instance;
              }
          }
        2. 枚举
          public eunm singleton{
              instance;
              public void whateverMethod(){
              }
          }

 

          5.双重校验锁
  public class singleton{
    private singleton instance;
    private singlton(){};
    public static synrchronizd singleton getInstance(){
    if(instance==null){
    instance = new singleton();
    }
    return instance;
    }
}