开发中经常遇到一些问题,一个问题通常有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、懒汉单例的实现步骤?