开发中经常遇到一些问题,一个问题通常有n种解法的,但其中肯定有一种解法是最优的,这个最优的解法被人总结出来了,称之为设计模式。
设计模式有20多种,对应20多种软件开发中会遇到的问题。
学设计模式主要学2点:
第一:这种模式用来解决什么问题;
第二:遇到这种问题了,该模式是怎么写的,他是如何解决这个问题的。
饿汉单例模式;
懒汉单例模式;
…
(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、懒汉单例的实现步骤?