定义

单例设计模式,就是采取一定的方法保证在整个软件系统中,对某个类只能存在一个对象实例,并且提供一个全局访问点

特点

  • 只有一个实例
  • 内部实例化
  • 提供公共的静态方法,返回类的对象

常见的两种实现方法

一、饿汉式

class Test{
    //私有化类的构造器
    private Test(){
    }
    //内部创建类的对象必须是静态
    private static Test instance = new Test();
    //提供公共的静态方法,返回类的对象
    public static Test getInstance(){
        return instance;
    }
}

二、懒汉式

class Test{
    //私有化类的构造器
    private Test(){
    }
    //声明(static)当前类对象,没有初始化
    private static Test instance = null;
    //提供公共的静态方法,返回类的对象
    public static Test getInstance(){
        if(instance == null){
            instance = new Test();
        }
        return instance;
    }
}

饿汉式和懒汉式的区别

饿汉式:
  1. 优点:对象加载时间过长
  2. 缺点:线程是安全的
懒汉式:
  1. 优点:延迟对象的创建
  2. 缺点:线程不安全

懒汉式线程安全解决办法

class Test {
    //私有化类的构造器
    private Test() {
    }

    //声明(static)当前类对象,没有初始化
    private static Test instance = null;
    //提供公共的静态方法,返回类的对象

//  public static synchronized Test getInstance(){
    //效率差
//    public static Test getInstance() {
//        synchronized (Test.class) {
//            if (instance == null) {
//                instance = new Test();
//            }
//            return instance;
//        }
//    }
    //效率更高
        public static Test getInstance() {
            if (instance == null) {
                synchronized (Test.class) {
                    if (instance == null) {
                        instance = new Test();
                    }
                }
            }
            return instance;
        }
}
最后修改:2022 年 02 月 08 日
如果觉得我的文章对你有用,请随意赞赏