Java 单例设计模式

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zcpvn/article/details/81287117

单例设计模式

  • 单例设计模式:保证类在内存中只有一个对象。
  • 如何保证类在内存中只有一个对象呢?
    • 控制类的创建,不让其他类来创建本类的对象。private
    • 在本类中定义一个本类的对象。Singleton s;
    • 提供公共的访问方式。public static Singleton getInstance() { return s; }

两种单例写法:

  • 饿汉式
public class Singleton {
    //1,私有构造函数
    private Singleton(){}

    //2,创建静态本类对象
    private static Singleton s = new Singleton();

    //3,对外提供静态公共访问方法
    public static Singleton getInstance() {
        return s;
    }
}
  • 懒汉式 单例的延迟加载模式,多线程访问可能会创建出多个对象
public class Singleton {
    //1,私有构造函数
    private Singleton() {}

    //2,声明一个静态本类的引用
    private static Singleton s;

    //3,对外提供静态公共的访问方法
    public static Singleton getInstance() {
        if(s == null) {
            s = new Singleton();
        }
        return s;
    }
}
  • 第三种格式
public class Singleton {
    //1,私有构造函数
    private Singleton() {}

    //final是最终的意思,被final修饰的变量不可以被更改
    public static final Singleton s = new Singleton();
}

饿汉式和懒汉式的区别

  • 懒汉式如果不加synchronized是线程不安全的
  • 饿汉式是空间换时间
  • 懒汉式是时间换空间

如今的硬盘比处理器便宜多了,显然是空间换时间性价比较高。



猜你喜欢

转载自blog.csdn.net/zcpvn/article/details/81287117