1、什么是设计模式(Design pattern)
开发中经常遇到一些问题,一个问题通常有n种解法的,但其中肯定有一种解法是最优的,这个最优的解法被人总结出来了,称之为设计模式。
设计模式有20多种,对应20多种软件开发中会遇到的问题。
学设计模式主要学2点:
第一:这种模式用来解决什么问题;
第二:遇到这种问题了,该模式是怎么写的,他是如何解决这个问题的。
2、单例模式是什么?
- 可以保证系统中,应用该模式的这个类永远只有一个实例,即一个类永远只能创建一个对象。
- 使用场景:例如电脑的任务管理器对象,我们只需要一个就可以解决问题了,这样可以节省内存空间。
3、单例的实现方式
饿汉单例模式;
懒汉单例模式;
…
(1) 饿汉单例设计模式
在使用类获取对象的时候,对象已经提前为你创建好了。
设计步骤:
第一,定义一个单例类;
第二,单例必须将构造器私有化,将构造器藏起来,防止对外产生对象;
第三,定义一个静态变量存储一个对象即可:属于类,与类一起加载一次。
//1.定义一个单例类
public class SingleInstance {
// 2.单例必须将构造器进行私有化,防止对外产生对象
private SingleInstance() {
}
// 3.饿汉单例是在获取对象前,已经提前准备好一个对象;这个对象只能是一个,所有定义静态变量存储
public static SingleInstance instance = new SingleInstance();
}
/**
单例测试类
目标:理解饿汉单例的设计步骤
*/
public class SingleInstanceTest {
public static void main(String[] args) {
SingleInstance s1 = SingleInstance.instance; //获取对象
SingleInstance s2 = SingleInstance.instance;
System.out.println(s1 == s2);
}
}
控制台输出结果:
饿汉单例重点总结
1、饿汉单例的实现步骤?
- 定义一个类,把构造器私有化(防止对外产生对象)。
- 定义一个变量存储一个对象(调用类时,对象已经准备好了,与类一起加载一次)。
(2) 懒汉单例设计模式
-
在真正需要该对象的时候,才去创建一个对象(延迟加载对象)。
-
设计步骤:
- 第一,定义一个类,把构造器私有化:防止对外产生对象;
- 第二,定义一个静态变量存储一个对象即可:属于类,与类一起加载一次;
- 第三,必须提供一个方法返回一个单例对象-
//1.定义一个懒汉单例类
public class SingleInstance02 {
// 2.必须将构造器私有化:防止对外产生对象
private SingleInstance02(){
}
// 3.定义静态变量存储一个对象;与类一起加载,只加载一次。最好做到私有化,这样可以避免给别人挖坑,公开化别人只会拿到一个null。
private static SingleInstance02 instance02;
// 4.提供一个方法,获取一个单例对象 再return返回单例对象
public static SingleInstance02 getInstance02(){
if (instance02 == null){
instance02 = new SingleInstance02();
}
return instance02;
}
}
public class SingleInstanceTest02 {
public static void main(String[] args) {
// 获取对象
SingleInstance02 s1 = SingleInstance02.getInstance02();
SingleInstance02 s2 = SingleInstance02.getInstance02();
System.out.println(s1 == s2);
}
}
控制台输出结果:
懒汉单例重点总结
1、懒汉单例的实现步骤?
- 定义一个单例类,把构造器私有化(防止对外产生对象);
- 定义一个私有化的静态变量,用于存储一个对象,不设初始值;
- 提供一个返回单例对象的方法。