铁匠 铁匠
首页
收藏
java
架构之路
常用算法
  • Java
  • nginx
  • 系统运维
  • 系统安全
  • mysql
  • redis
参考文档
关于
链接
  • 分类
  • 标签
  • 归档

专注、不予评判地关注当下
首页
收藏
java
架构之路
常用算法
  • Java
  • nginx
  • 系统运维
  • 系统安全
  • mysql
  • redis
参考文档
关于
链接
  • 分类
  • 标签
  • 归档
  • 概览

  • 设计模式

    • 软件设计原则
    • 创建型

      • 单例模式
        • 饿汉式
        • 静态内部类 - 懒汉式
        • 枚举 - 懒加载
      • 工厂模式
    • 结构型

    • 行为型

  • 高可用

  • 性能优化

  • 分布式

  • 网关

  • 流量治理

  • 数据治理

  • 云原生

  • 网络安全

  • 架构
  • 设计模式
  • 创建型
fengjx
2022-12-30
目录

单例模式

单例模式:一个类只创建一个实例。

应用场景:

  1. 避免对象创建耗时较长(数据库连接池)
  2. 避免资源竞争
  3. 没有必要的内存开销

# 饿汉式

在类加载时创建对象

public class Singleton {

    private static final Singleton INSTANCE = new Singleton();


    private Singleton() {
    }

    public static Singleton getInstance() {
        return INSTANCE;
    }

    public void sayHi() {
        System.out.println("hi");
    }

}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

# 静态内部类 - 懒汉式

第一次使用时加载

public class LazySingleton {

    private LazySingleton() {
    }

    private static class Hold {
        public static LazySingleton INSTANCE = new LazySingleton();

    }

    public static LazySingleton getInstance() {
        return Hold.INSTANCE;
    }

    public void sayHi() {
        System.out.println("hi");
    }

}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

# 枚举 - 懒加载

public enum EnumSingleton {

    INSTANCE;

    public EnumSingleton getInstance() {
        return INSTANCE;
    }

    public void sayHi() {
        System.out.println("hi");
    }


}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#单例
软件设计原则
工厂模式

← 软件设计原则 工厂模式→

最近更新
01
策略模式
01-09
02
模板方法
01-06
03
观察者模式
01-06
更多文章>
Theme by Vdoing | Copyright © 2016-2023 铁匠 | 粤ICP备15021633号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式