单例设计模式
什么是单例?
单例的意思是一个类永远只存在一个对象,不能创建多个对象
为什么要用单例?
开发中有很多类的对象我们只需要一个,例如虚拟机对象!任务管理器对象!对象越多越占内存,有些时候只需要一个对象就可以实现业务,单例可以节约内存,提高性能。
如何实现单例?
(1)饿汉单例设计模式:
通过类获取单例对象的时候,对象已经提前做好;
实现步骤:
1、定义一个单例类
2、把类的构造器私有
3、定义一个静态成员变量用来存储一个对象
4、定义一个方法返回单例对象
public class SingleInstanceDeom1 { public static void main(String[] args) { SingleInstance01 instance01 = SingleInstance01.getInstance(); SingleInstance01 instance02 = SingleInstance01.getInstance(); System.out.println(instance01 == instance02); //返回结果为true,说明是单例 } } class SingleInstance01{ //定义一个静态成员变量用来存储对象(饿汉单例,在返回对象时候,对象已经做好,所以这里直接创建出来) public static SingleInstance01 sin = new SingleInstance01(); //把类的构造器私有,构造器只能在本类中访问! private SingleInstance01() { } //定义一个方法返回单例对象 public static SingleInstance01 getInstance(){ return sin; } }
(2)懒汉单例设计模式:
通过类获取单例对象时候发现没有对象,才会去创建一个对象
1、定义一个单例类
2、把类的构造器私有
3、定义一个静态成员变量用来存储一个对象
4、定义一个方法返回单例对象,不存在就创建,存在直接返回
public class SingleInstanceDemo2 { public static void main(String[] args) { SingleInstance02 instance1 = SingleInstance02.getInstance(); SingleInstance02 instance2 = SingleInstance02.getInstance(); System.out.println(instance1 == instance2); } } class SingleInstance02{ //构造器私有 private SingleInstance02(){} //创建一个静态成员变量来获取对象(懒汉单例模式,只有在需要时候才创建,所以这里只是创建对象,但是为空) public static SingleInstance02 sin; //创建一个方法来返回单例对象(这里要判断 sin是否为空) public static SingleInstance02 getInstance() { if (sin == null){ //如果为空,创建单例 sin = new SingleInstance02(); } return sin; } }