铁匠 铁匠
首页
golang
java
架构
常用算法
  • Java
  • nginx
  • 系统运维
  • 系统安全
  • mysql
  • redis
参考文档
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

铁匠

不予评判的专注当下
首页
golang
java
架构
常用算法
  • Java
  • nginx
  • 系统运维
  • 系统安全
  • mysql
  • redis
参考文档
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 概览

  • 设计模式

    • 软件设计原则
    • 创建型

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

    • 行为型

  • 性能优化

  • 分布式

  • 网关

  • 流量治理

  • 数据治理

  • 云原生

  • 架构
  • 设计模式
  • 创建型
xugaoyi
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
#单例
Last Updated: 2024/04/23, 01:30:37
软件设计原则
工厂模式

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

最近更新
01
go-kit学习指南 - 多协议支持
04-19
02
go-kit学习指南 - 中间件
04-19
03
go-kit开发微服务 - 服务注册与发现
04-19
更多文章>
Theme by Vdoing | Copyright © 2016-2024 铁匠 | 粤ICP备15021633号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式