Java设计模式——单例模式

单例模式有三个特点:

  1. 单例类只能有一个实例
  2. 单例类必须自己创建自己的唯一实例
  3. 单例类必须给其它对象提供这一实例

单例模式的用处:

  • 防止资源被多个请求同时调用(如打印机、通信端口等)
  • 存放配置信息,避免状态不一致

五种实现单例模式的方法:

1、饿汉式(先创建出实例):

class Singleton{
    //静态实例
    private static Singleton singleton = new Singleton();

    //构造函数
    private Singleton(){};

    public Singleton getInstance(){
        return singleton;
    }
}

2、懒汉式(需要时才创建实例):

class Singleton{
    private static Singleton singleton = null;

    public static synchronized Singleton getInstance(){
        if(null == singleton){
            singleton = new Singleton();
        }
        return singleton;
    }
}

3、枚举

enum Singleton{
    INSTANCE;  //枚举成员

    private Singleton singleton;

    private Singleton{
        singleton = new Singleton();
    }

    public Singleton getInstance(){
        return singleton;
    }
}

//获得实例:Singleton.INSTANCE.getInstance();

4、静态内部类:

class Singleton{
    //静态内部类
    private static calss SingletonHolder{
        private static final Singleton singleton = new Singleton();
    }

    //构造函数
    private Singleton(){};

    public static final Singleton getInstance(){
        return SingletonHolder.singleton;
    }
}

5、静态代码块

class Singleton{
    //静态变量
    private static Singleton singleton = null;

    //构造函数
    private Singleton(){};

    //静态代码块
    static{
        singleton = new Singleton();
    }

    public Singleton getInstance(){
        return singleton;
    }
}

你可能感兴趣的:(Java)