package singleton;
//单例模式的意义,让类只能创建一个对象,目的是减少对象的创建个数节约内存空间
//调用同一个方法,如果有几千上万人去调用,按照对象调用方法那么需要创建几千上万个对象,单例模式目的在共享一个对象,创建对象的过程私有化
//根据分析需要在本类中某个成员位置进行new来创建唯一一个对象,那么应该在哪里进行创建呢
public class SingleTon {
//重写无参数构造方法,修改权限符,外界不允许随意调用
private SingleTon(){
}
//不能直接让别人操作属性,万一给你赋值为null呢,static目的是让这个属性变成类的,只加载一次
private static SingleTon singleTon=new SingleTon();//饿汉式:类加载的时候就创建了
//private static SingleTon singleTon;//懒汉式:只声明,当调用方法时才创建对象
//通过使用getSingleTon方法创建获得对象,类名调用
public static SingleTon getSingleTon(){
// if(singleTon==null){//懒汉式:在方法中创建,调用时才创建。加一段判断,确保第二次调用时不会再创建对象
// singleTon=new SingleTon();
// }
return singleTon;
}
//分析创建对象的位置
//属性---可以,不过得注意
//方法----不行,可以创建,也有返回值,但是保证不了唯一,调用几次就创建几个。
//构造方法---不行,本来就要调它,不能再它自己里面调用自己
//块--不行,可以创建,但是无法给别人使用,没有返回值
// {
// SingleTon ston=new SingleTon();
// }
}
/**
* 总结:
* 1.私有的构造方法
* 2.私有的静态的当前类对象作为属性
* 3.公有的静态方法返回当前类对象
* 单例模式的实现,指对象的加载
* 饿汉试(立即加载-类加载时就创建对象)
* 懒汉式(延迟加载--调用方法时才创建对象)
* 生命周期托管(对象加载过程交给别人)
**/