1、保证在内存中只要一个对象
- 控制类的创建,不让其他类创建本类对象-private
- 在本类中定义一个本类的对象-本类 本类对象
- 提供公共访问方式 -public static 本类 getInstance(return 本类对象)
2、饿汉式
class Singleton{
private Singleton(){};
private static Singleton s = new Singleton();//直接创建对象
public static Singleton getInstance(){
return s;
}
}
3、懒汉式
class Singleton{
private Singleton(){};
private static Singleton s;//不直接创建对象
public static Singleton getInstance(){
if(s == null)
//线程1、2
s = new Singleton();//什么时候用,什么时候创建对象
return s;
}
}
4、区别
- 饿汉式空间换时间,懒汉式时间换空间
- 多线程,饿汉式单个对象,懒汉式可以