当前位置: 首页 > article >正文

设计模式一--单例设计模式

一 引言

在设计模式里面,单例设计模式属于建造者模式,是最常见的设计模式,也是最简单的设计模式。

二 单例设计模式的介绍

定义:

其核心思想是确保一个类在整个系统中只有一个实例,并提供一个全局访问点来访问这个唯一实例。这种模式的主要目的是控制类的实例化过程,确保在整个应用程序中,一个类只有一个实例存在。

注意点:
  1. 类的构造函数必须是私有的,防止外部直接实例化。

  2. 类中提供一个静态方法来返回唯一的实例。

  3. 类中维护一个指向唯一实例的静态变量

三 单例设计模式的饿汉式讲解

饿汉式的代码就是在类创建是直接将他的实例创建出来,这样做的好处是线程是安全的,缺点是如果这个类的体量很大的话,并且当前我们并不是很需要这个类,这样创建的话就影响效率

饿汉式的代码如下:
/**
 * 创建饿汉式单例模式
 */
public class Hung_han_Demo01 {
    private static Hung_han_Demo01 instance;
    private Hung_han_Demo01(){
        instance=new Hung_han_Demo01();
    }
    public static Hung_han_Demo01 getInstance(){
        return instance;
    }
}
测试代码:
 @Test
   void getInstance() {
       Hung_han_Demo01 instance1=Hung_han_Demo01.getInstance();
       Hung_han_Demo01 instance2=Hung_han_Demo01.getInstance();
       System.out.println(instance1==instance2);
    }

测试结果展示:

四 不考虑线程安全的懒汉式 

懒汉式就是只有在使用时才会创建。这里现在的代码就是为了让大家快速理解代码,其实我们现在可以发现,这个代码的线程是不安全的。 

代码演示: 

/**
 * 单例设计模式懒汉式代码
 */
public class LazyStyle {
    private static LazyStyle instance;
    private LazyStyle(){};
    public static LazyStyle getInstance(){
        if(instance==null){
            instance = new LazyStyle();
        }
            return instance;
    }
}
图解为什么线程不安全:

五 线程安全的懒汉式单例设计模式 

代码: 
/**
 * 单例设计模式懒汉式代码
 */
public class LazyStyle02 {
    private static LazyStyle02 instance;
    private LazyStyle02(){};
    public static synchronized LazyStyle02 getInstance(){
        if(instance==null){
            instance = new LazyStyle02();
        }
            return instance;
    }
}


http://www.kler.cn/news/358240.html

相关文章:

  • WebStorm小白下载安装教程
  • Flink窗口分配器WindowAssigner
  • centOS实用命令
  • 一图秒懂色彩空间和色彩模型
  • HarmonyOS开发(状态管理,页面路由,动画)
  • MySQL面试专题-索引
  • 缓存常见问题:缓存穿透、雪崩、击穿及解决方案分析
  • Java中的校验性判断
  • 远程连接服务器
  • Qt-系统网络HTTP客户端(66)
  • CAXA制造工程师2024软件下载
  • 一句话木马的多种变形方式
  • Java程序OutOfMemoryError分析与heap dump
  • SpringBoot高校学科竞赛平台:安全与维护指南
  • react函数组件和类组件
  • (五)若使用LQR控制小车倒立摆,该如何对小车和摆杆的动力学方程线性化?哪些变量是可以进行简化的,线性化后的状态空间方程应该怎么列写
  • CVE-2024-22120:Zabbix低权限SQL注入至RCE+权限绕过
  • Axure使用echarts详细教程
  • 优阅达携手 Theobald 亮相新加坡科技周,助力企业 SAP 数据集成与应用
  • 基于Python实现“科研通”自动签到