目录
final关键字
什么是设计模式:
1、静态方法和属性的经典使用
2、设计模式是在大量的实践中总结和理论化之后优选的代码结构、编程风格、以及解决问题的思考方式。设计模式就像是经典的棋谱,不同的棋局,我们用不同的棋谱,免去我们自己再思考和摸索。
什么是单例模式:
a:所谓单例设计模式,就是采取一定的方法保证这整个的软件系统中,对某个类只存在一个的对象实例,并且该类只提供一个取得其对象实例的方法
b:单例模式有两种方法:A:饿汉式B:懒汉式
单例设计模式应用实例:
步骤如下:
1)构造器私有化--》防止直接new一个对象
2)类的内部创建对象
3)向外暴露一个静态的公共方法。getInstance
4)代码实现
饿汉式:
class Girlfriend{
//如何保证只能创建一个Girlfriend
//步骤[饿汉式]
//1)构造器私有化
//2)在类的内部直接创建私有静态对象
//3)提供一个公共的static方法,返回gf对象
private String name;
public static Girlfriend getInstance(){
return gf;
}
private static Girlfriend gf = new Girlfriend("小花");
//为了能够在静态方法中返回gf对象,需将其修饰为static
private Girlfriend(String name) {
super();
this.name = name;
}
}
懒汉式:
class cat{
String name;
private static cat cat;
// 步骤[懒汉式]
//1、仍然将构造器私有化
//2、定义一个static属性对象
//3、提供一个public的static方法,可以返回一个cat对象
//4、懒汉式,只有当用户使用getInstance时,才返回cat对象,后面再次调用时,
//会返回上次创建的cat对象
private cat(String name) {
super();
this.name = name;
}
public static cat GetInstance() {
if(cat == null) {
// 如果还没有创建cat对象
cat = new cat("小花");
}
return cat;
}
}
饿汉式与懒汉式区别:
1、二者最主要的区别在于创建对象的时机不同:饿汉式是在类的加载时就创建对象实例,而懒汉式是在使用时才创建
2、饿汉式不存在线程安全问题,懒汉式存在线程安全问题
3、饿汉式存在浪费资源的可能。因为如果程序员一个对象实例都没有使用,那么饿汉式创建的对象就浪费了,懒汉式是使用时才创建,就不存在这个问题
4、在javaSE标准类中,java.lang.Runtime就是经典的单例模式
final关键字:
final可用于修饰类,属性,方法和局部变量,
final使用情景:
1)当不希望类被继承时,可用final进行修饰
2)不希望父类的某个方法被子类覆盖/重写时,可以用final关键字修饰
3)当不希望类的某个属性的值被修改,可以使用final修饰
4)当不希望某个局部变量被修改,可以用final修饰
final的注意事项以及细节:
A:final修饰的属性又叫常量,一般用xx_xx_xx来命名
B:final修饰的属性在定义时,必须赋初值,并且以后不能再修改,赋值可以在如下位置之一:
a:定义时:如public final double TAX_RATE = 0.08;
b:在构造器中
c:在代码块中
C:如果final修饰的属性是静态的,则初始化的位置只能是1)定义时2)在静态代码块,不能在构造器中赋值
D:final类不能继承,但可以实例化对象
E:如果类不是final类,但含有final方法,则该方法虽然不能重写,但是可以被继承
F:一般来说,如果一个类已经是final类了,就没有必要再将方法修饰成final方法
G:final不能修饰构造方法(即构造器)
H:final与static往往搭配使用,效率更高,不会导致类的加载,底层编译器做了优化处理
I:包装类(Integer,Double,Float,Boolean等都是final类),String也是final类



