写在前面
单例模式定义: 一个类 只能创建一个实例。
使用一个对象来做就不用实例化多个对象!这就能减少我们空间和内存的开销~
我们使用静态类.doSomething()和使用单例对象调用方法的效果是一样的啊。
没错,效果就是一样的。使用静态类.doSomething()体现的是基于对象,而使用单例设计模式体现的是面向对象。
编写单例模式的代码其实很简单,就分了三步:
将构造函数私有化
在类的内部创建实例
提供获取唯一实例的方法
常用的单例模式
- 饿汉式
public class Liuge36 {
// 1.构造函数私有化
private Liuge36(){
}
// 2.在类的内部创建实例
private static Liuge36 liuge36 = new Liuge36();
// 3.提供获取实例的唯一方法
public static Liuge36 getInstance(){
return liuge36;
}
}
一上来就创建对象了,如果该实例从始至终都没被使用过,则会造成内存浪费。
- 简单懒汉式 (在方法上加锁)
既然说一上来就创建对象,如果没有用过会造成内存浪费:
那么我们就设计用到的时候再创建对象!
public class Liuge36 {
// 1.将构造函数私有化
private Liuge36(){
}
// 2.先不创建对象,等用到的时候 ,再开始创建
private static Liuge36 liuge36 = null