黑马程序员——单例模式

---------------------- ASP.Net+Unity开发.Net培训、期待与您交流! ----------------------

单例模式

       解决一个类在内存中只存在一个对象的情况

       为了保证避免程序过多建立对象,禁止其他程序建立该类对象

       为了其他程序可以访问该类对象,只好在本类中自定义对象

       为了方便其他程序对自定义对象的访问,可对对象提供一些访问方式。

单例模式实现方式

       构造函数私有化

       在类中创建本类对象

       提供获取该对象的方法

3.1. 单例模式——懒汉式

       对象时方法被调用的时候,才初始化,也称对象延时加载

     

  public classSingle {
        privateSingle(){}
        private staticSingle single;
        public staticSingle getSingle(){
            single = newSingle();
            return single;
        }
}

    存在的隐患:

              当不同的类同事调用getSingle()方法时,存在对象被重复创建的风险,如何解决?引入同步锁。

       同步函数:这种方法相对效率比较低

     

  public classSingle {
        privateSingle(){}
        private staticSingle single;
        public static synchronizedSingle getSingle(){
           if(single!=null)
               single = newSingle();
           return single;
        }
    }
    同步代码块:降低了获取锁的次数,提高了效率
    public staticSingle getSingle(){
       if(single==null)
           synchronized(Single.class){
              if(single!=null)
                  single = newSingle();
           }
          
       return single;
    }

3.2. 单例模式——饿汉式

       类已进入内存,就创建好了对象,程序示例:

     

  public classSingle {
        privateSingle(){}
        private staticSingle single = newSingle();
        public staticSingle getSingle(){
           return single;
        }
}

---------------------- ASP.Net+Unity开发.Net培训、期待与您交流! ----------------------详细请查看: www.itheima.com
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
黑马程序员的tb_brand是指在JavaWeb基础教程中创建的一个表。这个表是用来存储品牌信息的,具体的表结构和数据类型需要和JavaBean类中的成员变量保持一致。\[1\]在这个教程中,使用了Maven来构建项目,并且使用了MyBatis作为持久层框架,通过配置pom.xml文件来引入相关依赖。\[2\] Maven是一个用于管理和构建Java项目的工具,它提供了一套标准化的项目结构、构建流程和依赖管理机制。\[3\] #### 引用[.reference_title] - *1* [【JAVAWEB开发】黑马程序员java web案例资料(含Element的删除与修改)](https://blog.csdn.net/aasd23/article/details/126940147)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [黑马程序员-MyBatis 框架-最全入门笔记、阿伟看了都得说真大、真细、真全!!!](https://blog.csdn.net/qq_57383364/article/details/128103058)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [JavaWeb——黑马程序员课程笔记](https://blog.csdn.net/King_ZACC/article/details/128573804)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值