单例模式(singleton)

本文详细介绍了单例模式的设计思想及其在Java中的实现方式,包括饿汉式和懒汉式。通过私有构造方法、静态属性和公共静态获取方法确保对象的唯一性,旨在减少内存占用并提高系统效率。
摘要由CSDN通过智能技术生成

单例模式(singleton)

  • 引入(设计模式要明白为什么要这样写,而不是记代码,代码很少,但记不住)

    • 设计一个系统,比如叫做百度,开发搜索引擎。代码如下:

      class Baidu{
              
        public void 搜索(String keyword){
             
              
          }
          
      }
      
      • 执行搜索

        • 创建一个对象

        • 写完上述代码,还不能做事情,需要调用搜索方法,才能开始搜索。

        • 同一时间有很多很多人在使用系统,数量可达到上亿。如果每个人在搜索的时候,都创建一个对象,那么需要的空间非常大,即使集群也不一定能承受得了。但是,他们创建对象目的,只是为了调用搜索方法,进行搜索。那么,想个方案,只创建一个对象,让所有人都可用,在堆内存只开辟一个空间,每调用一次方法,临时执行一次,栈内存中执行,方法执行空间就回收了。

        • 由上一条,可知,单例模式有效减少内存占用。

  • 示例

    • 不要直接在src直接创建类,即使工程就一个类,也要创建包来存放。

    • 如下代码

      SingleTon single = new SingleTon();
      
      • 这种构造对象的方式,是通过代用无参构造方法实现的。每次用过new创建对象,是通过调用构造方法得到了,如果调不到构造方法,那就创建不了独享,所以把构造方法私有,就使用new创建不了了。

      • 1.让构造方法私有—保证外面不可以随便创建对象

        private SingleTon(){
                 
        
            }
        
      • 2.单例 不是无例—在本类中的某个成员位置上创建一个唯一对象

        • 构造方法:不行,私有 本身 调用不到

        • 块,如下方代码,在块中写,但是外面拿不到这个对象,必须要有返回值。创建了对象也无法给别人使用

          {
                     
                SingleTon singleTon =new SingleTon(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值