单例模式(饿汉式VS懒汉式)

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

一、饿汉式

二、懒汉式

//懒汉式
//为了防止饿汉式对象的浪费,则引用懒汉式
//不调用时不创建对象,只有在需要时创建对象
//懒汉式,只有在第一次调用静态方法getInstance02()时,才会创建一个对象。从而保证单例

饿汉式VS懒汉式

1.二者最主要的区别在于创建对象的时机不同:饿汉式是在类加载就创建了对象实例,而懒汉式是在使用时才创建。

2.饿汉式不存在线程安全问题,懒汉式存在线程安全问题。

3.饿汉式存在浪费资源的可能。因为如果在程序中一个对象实例都没有使用,那么饿汉
式创建的对象就浪费了,懒汉式是使用时才创建,就不存在这个问题。

final关键字:

final 可以修饰类、属性、方法和局部变量.

在某些情况下,程序员可能有以下需求,就会使用到final:

1)当不希望类被继承时,可以用final修饰.

2)当不希望父类的某个方法被子类覆盖/重写(override)时,可以用final关键字修饰。

3)当不希望类的的某个属性的值被修改,可以用final修饰.

4)当不希望某个局部变量被修改,可以使用final修饰

5)一般来说,如果一个类已经是final类了,就没有必要再将方法修饰成final方法。

6) final不能修饰构造方法(即构造器)

7) final 和static往往搭配使用,效率更高,不会导致类加载.底层编译器做了优化处理。

8)包装类(Integer,Double,Float,Boolean等都是final),String也是final类。

final使用注意事项和细节

final修饰的属性又叫常量,一般用XX XX XX来命名

final修饰的属性在定义时,必须赋初值,并且以后不能再修改,赋值可以在如下位置之一【选择一个位置赋初值即可】:
①定义时:如public final double TAX_RATE=0.08;

②在构造器中

③在代码块中。

如果final修饰的属性是静态的,则初始化的位置只能是

①定义时

②在静态代码块不能在构造器中赋值。

final类不能继承,但是可以实例化对象。

如果类不是final类,但是含有final方法,则该方法虽然不能重写,但是可以被继承。

利用 final 取消类加载

 5)一般来说,如果一个类已经是final类了,就没有必要再将方法修饰成final方法。6) final不能修饰构造方法(即构造器)
7) final 和static往往搭配使用,效率更高,不会导致类加载.底层编译器做了优化处理。

抽象类

当父类的某些方法,需要声明,但是又不确定如何实现时,可以将其声明为抽象方法,那么这个类就是抽象类

抽象类使用的注意事项和细节讨论

1)抽象类不能被实例化

2)抽象类不一定要包含abstract方法。也就是说,抽象类可以没有abstract方法

3)一旦类包含了abstract方法,则这个类必须声明为abstract

4) abstract 只能修饰类和方法,不能修饰属性和其它的

5)抽象类可以有任意成员【抽象类本质还是类】,比如:非抽象方法、构造器、静态属性等等

6)抽象方法不能有主体,即不能实现.

7)如果一个类继承了抽象类,则它必须实现抽象类的所有抽象方法,
除非它自己也声明为abstract类。

8)抽象方法不能使用private、final和static来修饰,因为这些关键字都是和重写相违背的,
 

文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树首页概览92407 人正在系统学习中

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年4月26日
下一篇 2022年4月26日

相关推荐