单例模式

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.公有的静态方法返回当前类对象
 * 单例模式的实现,指对象的加载
 * 饿汉试(立即加载-类加载时就创建对象) 
 * 懒汉式(延迟加载--调用方法时才创建对象)
 * 生命周期托管(对象加载过程交给别人)
 **/

 

posted on 2020-02-18 16:52  刀锋93  阅读(100)  评论(0编辑  收藏  举报

导航