java基础系列(八)

1.前言        

        java中创建一个对象是需要消耗内存的,当我们无休止的创建对象就会造成内存不足,并且很多对象我们使用一次就不使用了,或者是在特定的场合才需要创建一个特定的对象,有没有什么好的方式可以帮助我们满足以上需求呢?这就是我们今天要介绍的单例设计模式。

2.单例设计模式

        单例设计模式分为两种,一种是有需要才创建,另一种是不管需不需要都会创建。前一种我们称为懒汉式,后一种称为饿汉式。

 

        2.1、饿汉式

        活不多说直接上代码:       

         从图中,我们可以看到,创建饿汉式分为三步骤:

        1.私有化构造器

        2.在类的内部构造一个对象

        3.提供一个类方法,可以使外部直接访问这个已经创建好的对象。

        这个内部的对象是以static修饰的,由前面的知识,我们知道,static修饰就会随着类的加载而加载,因此这个对象在还没有实例化对象的时候就存在了,所以我们说它是不管我们需不需要都会创建的。

        2.2、懒汉式           

        从图中,我们可以看到,创建懒汉式分为三步骤:

        1.私有化构造器

        2.在类的内部提供一个对象

        3.提供一个类方法,如果当外界使用时,对象不存在就创建否则就直接返回已创建的对象。

        懒汉式的内部对象也是用static修饰的,但不同的是,我们没有给他提供一个对象引用,也就导致了对象 == NULL。因此这就是不占用内存的原因。并且只有当我们需要的时候才会创建对象来提供给我们使用。

        2.3、区别        

         至于什么是线程安全,我们在后面会仔细学习的!!

3.final关键字

        如果我们希望在java中使用常量该怎么办呢?final关键字就来帮助我们了。

        使用场景1:不希望类被其他类继承

        

        使用场景2:不希望父类的某个方法被子类重写        

         使用场景3:不希望类的某个属性的值被修改

        

        使用场景4:不希望类的局部变量被修改:

        

 4.final修饰的属性

        对于final修饰的属性,对于他的赋值是有要求的

        4.1、final修饰的非静态属性        

         4.2、final修饰静态属性        

         为什么不能在构造器中赋值,这个问题我们已经讲了很多次了,因为static修饰是要高于构造器的,随类的加载而加载的。因此不能在构造器中赋值。

        final修饰静态属性有一个好处,是不会引起其他静态属性的执行。 

 5.结语

        今天就讲到这里了,后面我们将讲述抽象类以及接口的概念!谢谢观看

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值