/**
* 饿汉式
*
*/
class Singleton {
//1.私有构造,其他类就不能访问该构造方法了
private Singleton () {};
//2.创建本类对象
private final static Singleton singleton = new Singleton();
//3.对外提供公共的访问方法
public static Singleton getSingleton() {
return singleton;
}
}
/**
* 懒汉式
*
*/
class Singleton2{
//1.私有构造方法,其他类就不能访问该构造方法了
private Singleton2() {};
//2.声明一个引用
private static Singleton2 singleton2;
//3.对外提供公共的访问方法
public static Singleton2 getSingleton() {
if(singleton2 == null) {
singleton2 = new Singleton2();
}
return singleton2;
}
}
/*
* 饿汉式和懒汉式的区别
* 1.饿汉式是空间换时间(一开始就创建对象),懒汉式是时间换空间(开始只是声明,调用的时候判断是否创建对象,否,才会创建对象)
* 2.多线程访问时,饿汉式不会创建多个对象,懒汉式有可能会创建多个对象
*
*/
/**
* 没有名字的单例模式
*
*/
class Singleton3{
//1.私有构造方法,其他类就不能访问该构造方法了
private Singleton3() {};
//2.对外提供公共的静态常量
public static final Singleton3 singleton3 = new Singleton3();
}