前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java设计模式之单例设计模式

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

作者头像
黑泽君
发布2018-10-11 17:59:42
4270
发布2018-10-11 17:59:42
举报
文章被收录于专栏:黑泽君的专栏黑泽君的专栏

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

代码语言:javascript
复制
/*
设计模式:对问题行之有效的解决方式。其实它是一种思想。

单例设计模式。(单个实例、单态)
    解决的问题:可以保证一个类在内存中的对象唯一性。
    必须对于多个程序使用同一个配置信息对象时,就需要保证该对象的唯一性。

    如何保证对象唯一性呢?
        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;
    }
}
本文参与?腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-03-14 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客?前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com