单例设计模式

单例模式:

所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例。

具体的代码实现:

饿汉式:

class Bank {
    //饿汉式
    //1.私有化的构造器
    private Bank() {

    }

    //2.内部创建类的私有的对象
    //4.对象也必须是是静态的
    private static Bank instance = new Bank();

    //3.提供一个公共的静态方法,返回类的对象

    public static Bank getInstance() {
        return instance;
    }
}

懒汉式:

class Order {
    //懒汉式
    //1.私有化类的构造器
    private Order() {

    }

    //2.声明类的私有的对象,但是不初始化
    //4.此对象也必须是是静态的
    private static Order instance = null;

    //3.提供一个公共的静态的方法
    public static Order getInstance() {
        if (instance != null) {
            instance = new Order();
        }
        return instance;
    }
}

解决线程安全问题的懒汉式:

class Bank{
    private Bank(){}
    private static Bank instance = null;
    public static Bank getInstance(){
        //方式一:效率稍差
//        synchronized (Bank.class) {
//            if(instance == null){
//                instance = new Bank();
//            }
//            return instance;
//        }
        //方式二:效率更高
        if(instance == null){
            synchronized (Bank.class) {
                if(instance == null){
                    instance = new Bank();
                }
            }
        }
        return instance;
    }
}

Original: https://www.cnblogs.com/hanhanz/p/16502527.html
Author: 憨憨BEEA
Title: 单例设计模式

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/610347/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 请你说说Spring

    一. Spring是什么? 是一个轻量级的开源容器框架,用来装JavaBean,可以把其他的一些框架进行整合使用,使得开发更快,更简洁。 轻量级:占用空间小,非入侵式的(Sprin…

    Java 2023年6月7日
    081
  • Jquery $(this).attr和$(this).val用法示例

    以下是个人心得整理,有兴趣朋友可以参考参考 $(this).attr(key); 获取节点属性名为key的值,相当于getAttribute(key)方法 $(this).attr…

    Java 2023年6月5日
    086
  • Spring MVC 常见问题

    Spring MVC的主要组件有那些? spring mvc 在使用 DispatcherServlet 处理 web 请求的时候,会用到 spring 中的九大组件,以下是几个关…

    Java 2023年6月5日
    068
  • 基于微前端qiankun的多页签缓存方案实践

    作者:vivo 互联网前端团队- Tang Xiao 本文梳理了基于阿里开源微前端框架qiankun,实现多页签及子应用缓存的方案,同时还类比了多个不同方案之间的区别及优劣势,为使…

    Java 2023年6月15日
    0107
  • Spring Cloud Gateway 断言(Predicate) (hoxton 版本)

    https://docs.spring.io/spring-cloud-gateway/docs Spring Cloud Gateway将路由匹配作为Spring WebFlux…

    Java 2023年5月30日
    088
  • webpack快速入门(一):安装

    webpack入门系列,从安装到使用再到放弃。。。。全套的哟,呵呵 首先说明,我是一个后端开发,好几年没碰过前端了,想当年写前端的时候jq还是主流,那时的前端还单纯的像个处女一样,…

    Java 2023年6月16日
    074
  • Nginx模块开发入门

    Nginx配置文件基本结构 配置文件可以看做是Nginx的灵魂,Nginx服务在启动时会读入配置文件,而后续几乎一切动作行为都是按照配置文件中的指令进行的,因此如果将Nginx本身…

    Java 2023年5月30日
    073
  • springboot application.properties不生效

    开始一直提示 Failed to configure a DataSource: ‘url’ attribute is not spec…

    Java 2023年6月8日
    099
  • java知识大全积累篇

    这里搜集了用来构建应用程序的工具。 Apache Maven:Maven使用声明进行构建并进行依赖管理,偏向于使用约定而不是配置进行构建。Maven优于Apache Ant。后者采…

    Java 2023年5月29日
    086
  • 1、TCP四元组UDP二元组

    UDP是面向无连接的,对于服务器和客户端来说只有一个socket,只需要确定目的IP和Port(dst ip 和dsp port),把数据都发送给这一个socket,所以采用二元组…

    Java 2023年6月8日
    0105
  • vmware16pro许可证密钥最新分享 vmware16pro官方可用激活码

    vmware16pro是一款强大的虚拟机软件,但是该软件的免费使用期限只有30天。今天小编就给大家分享一下2022最新官方可用的vmware16pro许可证密钥,小编多台机器测试激…

    Java 2023年6月5日
    0260
  • 教学日志:javaSE-初识java

    一、编译执行第一个java程序 /* 总结: 1、编译执行第一个java程序 步骤如下: 1、安装JDK开发环境; 2、配置环境变量,JAVA_HOME,PATH;–验证环境变量…

    Java 2023年6月5日
    072
  • 注解@PostConstruct分析

    1.注解@PostConstruct可以添加在类的方法上面,如果这个类被IOC容器托管,那么在对Bean进行初始化前的时候会调用被这个注解修饰的方法 被定义在哪里? 1.被定义在了…

    Java 2023年6月15日
    069
  • Java:JVM基础——非堆部分(Java8)

    PS:现在普遍都是 Java8 和 Java11 了,我不打算写 Java8 之前的了,本文出现的虚拟机都是 HotSpot 虚拟机 1、 JVM 内存结构图 2、 Java Vi…

    Java 2023年6月7日
    058
  • (转) MySQL中的意向锁

    详解 MySql InnoDB 中意向锁的作用 posted on2022-09-29 21:54 茶倌 阅读(9 ) 评论() 编辑 Original: https://www….

    Java 2023年6月8日
    081
  • 搭建 RabbitMQ Server 高可用集群

    阅读目录: 准备工作 搭建 RabbitMQ Server 单机版 RabbitMQ Server 高可用集群相关概念 搭建 RabbitMQ Server 高可用集群 *搭建 H…

    Java 2023年5月30日
    085
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球