• Java设计模式之单例设计模式


    Java设计模式之单例设计模式

    /*
    设计模式:对问题行之有效的解决方式。其实它是一种思想。
    
    单例设计模式。(单个实例、单态)
        解决的问题:可以保证一个类在内存中的对象唯一性。
        必须对于多个程序使用同一个配置信息对象时,就需要保证该对象的唯一性。
    
        如何保证对象唯一性呢?
            1,不允许其他程序用new创建该类对象。这样做的好处:可以避免产生更多对象。(别人创建的类不好控制)
            2,在该类创建一个本类实例。(自己创建的类可以好控制)
            3,对外提供一个方法让其他程序可以获取该对象。
    
        解决对象唯一性的步骤:
            1,私有化该类构造函数。(这样别人就不能new了)
            2,通过new在本类中创建一个本类对象。
            3,定义一个公有的方法,将创建的对象返回。
    
    */
    /*
        不能创建对象,但是还要去获取对象,
        对象的方法被调用有两种方式:
            1、通过对象调用。
            2、通过类名调用。但是类名调用有前提,公有的方法必须是静态,而静态访问的内容必须是静态的。
    */
    
    //饿汉式
    class Single    //类一加载,对象就已经存在了。
    //立即加载形式
    {
        private static Single s = new Single(); //创建一个本类的对象。
        //成员变量一般不会暴露出去,故用private,即私有化,是为了可控;可以通过"方法"来访问,有了方法就有了可控的可能,里面可以加一些限制条件。
    
        private Single(){} //私有化该类构造函数。
    
        public static Single getInstance() //对外提供一个本类的返回对象。getInstance:“获取实例”
        {
            return s;
        }
    }
    
    //懒汉式需要重点掌握,面试需要用。
    //懒汉式,缺点:多线程技术,当多线程并发访问时,有可能保证不了对象的唯一性,即存在安全隐患。
    class Single2    //类加载进来,没有对象,只有调用了getInstance方法时,才会创建对象。
    //延迟加载形式。
    {
        private static Single2 s = null;
    
        private Single2(){}
    
        public static Single2 getInstance()
        {
            if(s == null)
                s = new Single2();
                
            return s;
        }
    }
  • 相关阅读:
    第01组 Beta冲刺(4/5)
    第01组 Beta冲刺(3/5)
    第01组 Beta冲刺(2/5)
    第01组 Beta冲刺(1/5)
    2019 SDN上机第6次作业
    2019 SDN阅读作业(2)
    2019 SDN上机第5次作业
    第01组 Alpha事后诸葛亮
    第01组 Alpha冲刺(6/6)
    团队作业第三次—项目需求分析
  • 原文地址:https://www.cnblogs.com/chenmingjun/p/8570956.html
Copyright © 2020-2023  润新知