【Java】单例设计模式

单例设计模式简介

目录

1.单例设计模式是什么?

设计模式 是解决 特定问题的优秀设计方式之一
单例设计模式:确保一个类只能够最多生成一个对象的类设计模式。

2.单例设计模式设计方法

饿汉式

注:所谓饿汉式,就是还没用就提前准备好该类对象。

  • 定义一个类变量记住类的一个对象
  • 把类的构造器私有
  • 定义一个类方法,返回类对象

设计示例:

A类

java 复制代码
package suziguang_d5_singleInstance;

public class A {
    private static A a = new A();

    private A()
    {}

    public static A getA()
    {
        return a;
    }
}

测试类

java 复制代码
package suziguang_d5_singleInstance;

public class Test {
    public static void main(String[] args) {
        // A a = new A(); //error
        A a1 = A.getA();
        A a2 = A.getA();
        A a3 = A.getA();

        System.out.println(a1);
        System.out.println(a2);
        System.out.println(a3);
    }
}

输出结果

懒汉式

注:所谓懒汉式,就是什么时候用什么时候才去生成对象。

  • 定义一个类对象,空
  • 把类的构造器私有
  • 提供一个类方法,保证返回的是同一个对象

设计示例:

B类

java 复制代码
package suziguang_d5_singleInstance;

public class B {
    private static B b = null;

    private B() {}

    public static B getB()
    {
        if(b == null) b = new B();

        return b;
    }
}

测试类

java 复制代码
package suziguang_d5_singleInstance;

public class Test_B {
    public static void main(String[] args) {
        B b1 = B.getB();
        B b2 = B.getB();
        System.out.println(b1);
        System.out.println(b2);
    }
}

输出结果

3.单例设计模式的应用

任务管理器(仅有一个页面,不可多开)

Runtime运行环境

查看:IDEA中输入Runtime,按ctrl + 鼠标左击。


EOF

相关推荐
小皮侠21 分钟前
【算法篇】逐步理解动态规划模型6(回文串问题)
java·开发语言·算法·动态规划
勤奋的小王同学~23 分钟前
(javaSE)抽象类和接口:抽象类概念语法和特性, 抽象类的作用;接口的概念 接口特性 实现多个接口 接口间的继承 Object类
java·开发语言
Ai财富密码42 分钟前
【Linux教程】Linux 生存指南:掌握常用命令,避开致命误操作
java·服务器·前端
LUCIAZZZ1 小时前
项目拓展-Jol分析本地对象or缓存的内存占用
java·开发语言·jvm·数据库·缓存·springboot
GalaxyPokemon1 小时前
LeetCode - 69. x 的平方根
java·数据结构·算法
在未来等你1 小时前
设计模式精讲 Day 1:单例模式(Singleton Pattern)
java·设计模式·面向对象·软件架构
heart000_11 小时前
基于 WebWorker 的 WebAssembly 图像处理吞吐量分析
java·图像处理·wasm
菜鸟阿达2 小时前
Idea 2025 commit 关闭侧边栏 开启探框
java·ide·intellij-idea
雨果talk2 小时前
【一文看懂多模块Bean初始化难题】Spring Boot多模块项目中的Bean初始化难题:包名不一致的优雅解决方案
java·spring boot·后端·spring·springboot
xiaowu0802 小时前
C# 中的Async 和 Await 的用法详解
java·开发语言·c#