单例模式

本文详细介绍了单例模式的五种实现方法:饿汉式、懒汉式、双重检测锁式、静态内部类式及枚举单例。每种实现方式的特点、优缺点以及适用场景都做了详细的解释。
  • 单例模式     保证一个类只有一个实例,并且提供一个访问该实例的全局访问点。

    很多时候我们都需要使用单例模式,因为它只生成一个实例,减少了系统性能开销。

    那么单例模式有哪些实现方法呢?

  • 主要分为
  1. 饿汉式(线程安全,调用效率高,但是不能延时加载)
  2. 懒汉式(线程安全,调用效率不高,可以延时加载)
  • 其它方式
  1. 双重检测锁式(由于JVM底层模型原因,偶尔会出现问题,不建议使用)
  2. 静态内部类式(线程安全,调用效率高,可以延时加载)
  3. 枚举单例(线程安全,调用效率高,不能延时加载)

  • 饿汉式
public class SingletonDemo {

    private static SingletonDemo instance = new SingletonDemo(); //类初始化时立即加载这个对象

    //私有构造器
    private SingletonDemo(){

    }

    //方法没有同步,调用效率高
    public static SingletonDemo getInstance(){
        return instance;
    }
}

  • 懒汉式(资源利用率高,并发效率低)
public class SingletonDemo {

    private static SingletonDemo instance; //类初始化时不加载这个对象

    //私有构造器
    private SingletonDemo(){ }

    //方法必须同步,防止高并发时多线程同时使用生成多个实例
    public static synchronized SingletonDemo getInstance(){
        if (instance==null){
            instance = new SingletonDemo();
        }
        return instance;
    }
}

  • 双重检测锁式(不建议使用)
public class SingletonDemo {

    private static SingletonDemo instance = null;

    //私有构造器
    private SingletonDemo(){}
    public static SingletonDemo getInstance(){
        if (instance==null){
            SingletonDemo demo;
            synchronized (SingletonDemo.class){
                demo = instance;
                if (demo == null){
                    synchronized (SingletonDemo.class){
                        if (demo == null){
                            demo = new SingletonDemo();
                        }
                    }
                    instance = demo;
                }
            }
        }
        return instance;
    }
}

  • 静态内部类式(线程安全,调用效率高,实现延时加载)
public class SingletonDemo {
    private static class SingletonClassInstance{
        private static final SingletonDemo instance = new SingletonDemo();
    }

    private SingletonDemo(){}
    
    public static SingletonDemo getInstance(){
        return SingletonClassInstance.instance;
    }

}

  • 枚举单例
public enum SingletonDemo {
   //枚举元素本身就是单例
    INSTANCE;

    //添加自己的操作
    public void singletonOperation(){

    }
}

【3D应力敏感度分析拓扑优化】【基于p-范数全局应力衡量的3D敏感度分析】基于伴随方法的有限元分析和p-范数应力敏感度分析(Matlab代码实现)内容概要:本文档介绍了基于伴随方法的有限元分析与p-范数全局应力衡量的3D应力敏感度分析,并结合拓扑优化技术,提供了完整的Matlab代码实现方案。该方法通过有限元建模计算结构在载荷作用下的应力分布,采用p-范数对全局应力进行有效聚合,避免传统方法中应力约束过多的问题,进而利用伴随法高效求解设计变量对应力的敏感度,为结构优化提供关键梯度信息。整个流程涵盖了从有限元分析、应力评估到敏感度计算的核心环节,适用于复杂三维结构的轻量化与高强度设计。; 适合人群:具备有限元分析基础、拓扑优化背景及Matlab编程能力的研究生、科研人员与工程技术人员,尤其适合从事结构设计、力学仿真与多学科优化的相关从业者; 使用场景及目标:①用于实现高精度三维结构的应力约束拓扑优化;②帮助理解伴随法在敏感度分析中的应用原理与编程实现;③服务于科研复现、论文写作与工程项目中的结构性能提升需求; 阅读建议:建议读者结合有限元理论与优化算法知识,逐步调试Matlab代码,重点关注伴随方程的构建与p-范数的数值处理技巧,以深入掌握方法本质并实现个性化拓展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值