单例模式,即每次获取的都是同一个对象,实现原理是构造方法私有化,保证本类之外不能进行new对象进行实例化,提供获取对象的静态方法,利用类名.方法名的方式获取对象;
懒汉式:
简单理解就是比较懒,需要用到对象的时候才去获取.懒汉式获取对象时可能会存在线程安全问题,可以使用synchronize关键字.
public class PersonalSingle {
// 私有构造方法
private PersonalSingle(){
}
// 私有静态变量
private static PersonalSingle personalSingle;
// 公有静态获取对象方法
public static PersonalSingle getPersonalSingle(){
if(personalSingle == null){
personalSingle=new PersonalSingle();
}
return personalSingle;
}
public static void main(String[] args) {
System.out.println(PersonalSingle.getPersonalSingle()==PersonalSingle.getPersonalSingle());
// 输出:true
}
}
饿汉式:
简单理解是比较饿,相对于懒汉式是主动获取对象
public class PersonalSingEhan {
private PersonalSingEhan(){
}
private static PersonalSingEhan personalSingEhan=new PersonalSingEhan();
public static PersonalSingEhan getPersonalSingEhan(){
return personalSingEhan;
}
public static void main(String[] args) {
System.out.println(PersonalSingEhan.getPersonalSingEhan()== PersonalSingEhan.getPersonalSingEhan());
// 输出:true
}
}