单例设计模式
2020-11-26 本文已影响0人
真是个点子王
单例介绍
- 1、什么是单例?
- 单例的意思是一个类永远只能存在一个对象,不能创建多个对象
- 2、为什么要用单例?
- 开发中有很多类的对象我们只需要一个,例如虚拟机对象,任务管理器对象
- 对象越多越占用内存,有时候只需要一个对象就可以实现业务,节约内存,提高性能
- 3、如何实现单例?
- 单例的实现方式目前有2中方式:
- (1)饿汉单例设计模式
- (2)懒汉单例设计模式
- 单例的实现方式目前有2中方式:
饿汉单例模式
- 在用类获取对象的时候,对象已经提前为你创建好了
实现步骤
- 1、定义一个单例类
- 2、把类的构造器私有
- 3、定义静态成员变量用于存储一个对象,这里直接会创建对象
- 4、定义一个方法返回单例对象 。
//饿汉单例模式
// 1.定义一个单例类
class Singleton01{
// 3. 定义静态成员变量用于存储一个对象
private static final Singleton01 INSTANCE = new Singleton01();
// 2. 把构造器私有
private Singleton01(){
}
// 4.定义一个方法,返回单例对象
public static Singleton01 getInstance(){return INSTANCE};
}
public class SingleInstanceDemo01 {
public static void main(String[] args) {
Singleton01 s1 = Singleton01.getInstance();
Singleton01 s2 = Singleton01.getInstance();
System.out.println(s1 == s2);
}
}
懒汉单例设计模式
- 在通过类获取单例对象的时候,发现没有对象才会去创建一个对象
实现步骤
- 1、定义一个单例类
- 2、把类的构造器私有
- 3、定义静态成员变量用于存储一个对象,在懒汉单例下,这一步不直接创建对象;
- 4、定义一个方法返回单例对象 ,这里如果对象未创建,需要创建一个对象。
// 懒汉单例模式
//1. 创建一个单类对象的类
public class SingleInstanceDemo02 {
public static void main(String[] args) {
Singleton02 s1 = Singleton02.getInstance();
Singleton02 s2 = Singleton02.getInstance();
System.out.println(s1 == s2);
}
}
class SingleIntance02{
// 3.定义一个静态成员变量,用于存储一个对象
private static SingleInstance02 ins;
// 2. 将构造器私有
private SingleInstance02(){
};
// 4.定义返回单例对象的方法
public SingleInstance02 getInstance(){
if( ins == null ){
ins = new SingleInstance02();
}
return ins;
}
}