设计模式-单例模式

Posted lingcoder

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式-单例模式相关的知识,希望对你有一定的参考价值。

目录

单例模式

核心作用 :

  • 保证一个类只有一个实例,并且提供一个访问该实例的全局访问点。

常见应用场景:

  1. 网站计数器
  2. 数据库连接池的设计
  3. Spring容器 等等

优点:

  1. – 由于单例模式只生成一个实例,减少了系统性能开销,当一个对象的产生需要
    比较多的资源时,如读取配置、产生其他依赖对象时,则可以通过在应用启动
    时直接产生一个单例对象,然后永久驻留内存的方式来解决
  2. – 单例模式可以在系统设置全局的访问点,优化环共享资源访问,例如可以设计
    一个单例类,负责所有数据表的映射处理

常见的五种单例模式实现方式:

  • 主要:

饿汉式

线程安全,调用效率高。 但是,不能延时加载。

示例:

public class SingletonHungry {
    private static SingletonHungry instance = new SingletonHungry();
    private SingletonHungry(){} // 私有化构造器
    public static SingletonHungry getInstance(){
        return instance;
    }
    
}

懒汉式

线程安全,调用效率不高。 但是,可以延时加载。

  • 其他:

双重检测锁式

由于JVM底层内部模型原因,偶尔会出问题。不建议使用

静态内部类式

线程安全,调用效率高。 但是,可以延时加载

枚举单例

线程安全,调用效率高,不能延时加载

以上是关于设计模式-单例模式的主要内容,如果未能解决你的问题,请参考以下文章

常用代码片段

性能比较好的单例写法

你熟悉的设计模式都有哪些?写出单例模式的实现代码

单例模式以及静态代码块

设计模式之单例模式

设计模式之单例模式