2022Java学习笔记三十二(面向对象加强进阶:单例设计模式:饿汉单例,懒汉单例)
一、什么是设计模式
1、设计模式是一套被前人反复使用、多数人知晓、经过分类编目的代码设计经验总结,后来者可以直接拿来解决问题
2、设计模式是软件设计中常见的解决方案,好的设计模式可以进一步的提高代码的复用性
单例设计模式
可以保证系统中,应用模式的这个类永远只有一个实例,即一个类永远只能创建一个对象
单例的实现方式有很多种:目前学习饿汉单例模式
二、饿汉单例设计模式
在用类获取对象的时候,对象已经提前为你创建好了
定义单例类
package com.zcl.d5_singleinstance1;
public class Singlelnstance1 {
/*
目标:学会使用饿汉单例方法定义单例类
*/
/*
2、定义一个公开的静态成员遍历存储一个类的对象
饿汉:在这里加载静态变量的时候就会创建对象了
*/
public static Singlelnstance1 instance = new Singlelnstance1();
/**
* 1、把构造器私有起来
*/
private Singlelnstance1() {
}
}
调用单例类
得到的地址是一样的
package com.zcl.d5_singleinstance1;
public class Test {
public static void main(String[] args) {
// Singlelnstance1 s1 = new Singlelnstance1(); 会报错
Singlelnstance1 s1 = Singlelnstance1.instance;
Singlelnstance1 s2 = Singlelnstance1.instance;
Singlelnstance1 s3 = Singlelnstance1.instance;
System.out.println(s1==s3); // true
}
}
三、懒汉单例设计模式
懒汉单例类
package com.zcl.d5_singleinstance1;
public class SingleInstance2 {
// 目标:学会懒汉单例模式
/*
2、创建一个静态的成员变量存储本类对象,注意:此时不能初始化对象
*/
private static SingleInstance2 instance; // null
/*
1、私有构造器
*/
private SingleInstance2(){
}
/**
3、定义一个方法,让其他地方可以调用获取一个对象
*/
public static SingleInstance2 getInstance(){
if(instance == null){
// 第一次获取对象
instance = new SingleInstance2();
}
return instance;
}
}
测试懒汉类
package com.zcl.d5_singleinstance1;
public class Test2 {
public static void main(String[] args) {
SingleInstance2 s1 = SingleInstance2.getInstance();
SingleInstance2 s2 = SingleInstance2.getInstance();
SingleInstance2 s3 = SingleInstance2.getInstance();
System.out.println(s1==s3); // true
}
}