单例设计模式的概念
在某些特殊场合,一个类对外只提供一个对象时,这样的类叫做单例类,而设计单例类的思想叫做单例设计模式
单例设计模式具体举例(经典套路),分为饿汉式和懒汉式
1.饿汉式 (一上来就创建对象)
public class Singleton {
//1.私有化构造方法,使用private关键字修饰
private Singleton (){}
//2.声明本类类型的引用指向本类类型的对象
Singleton singleton = new Singleton();
// 使用private 修饰的原因:将对象私有,保证在类外不能直接调用singleton
// 不用static修饰会报错的原因:在静态方法中只能访问静态成员不能访问非静态成员
//3.提供公有的get方法负责将上述对象返回出去
public static Singleton get(){
//用static修饰方法名,将方法提升为类层级,这样在main方法中直接用类名.的方式调用
return singleton;
}
}
2.懒汉式(一开始先不创建对象,等到需要时再创建)
public class Singleton {
//1.私有化构造方法,使用private关键字修饰
private Singleton () {}
//2.声明本类类型的引用指向本类类型的对象
private static Singleton singleton = null;
//3.用公有的set方法将获取到的对象返回出去
public static Singleton get(){
if(null==singleton){
singleton = new Singleton();
}else
return singleton ;
}
}
main测试类中的具体实现
public class SingletonTest {
public static void main(String[] args) {
Singleton singleton3=Singleton.get();//用类名.来调get方法,因此来获得类里面的对象
Singleton singleton4=Singleton.get();
System.out.println(singleton3==singleton4);
}
}