美文网首页程序员
一见如故之java单例模式 singleton

一见如故之java单例模式 singleton

作者: FirmJack | 来源:发表于2017-11-12 19:30 被阅读0次
     有人写文章用深入浅出或者通俗易懂来形容自己的文章,此时我这里一见如故再好不过了 ^_^
一见如故?

大多数java开发者,对于spring真的是不能在熟悉了,每次你的tomcat在启动后是不是会看见好多个singleton的字眼,好多开发者不会太在意这些东西,可是越深入越得知道这些基础的东西。在spring所有的bean缺省的生成方式是singleton,也就是说你所有的bean在你不指定scope的情况下都会是singleton(单例模式) 与之对应的原型模式我会在下次为大家说明。


spring-bean4.xsd源文件.png

来一个实际中的场景 这里我将redis连接池使用了单例模式,哈哈默认也是单例只不过为了表述清楚而已


bean.png
这样的场景,你会一见如故吗?
^^
常见的两种单例模式
    饿汉式与懒汉式

实现单例,先私有化类的构造器,这是就不会被实例化了

所谓饿汉式单例模式 看下面代码

//饿汉式  启动时就加载了实例
public class Singlet {

    private Singlet(){

    }
    //直接实例化了该对象,别人用时直接通过类名调用getInstance()
    //这样就实现了饿汉式,管你需不需要直接通过getInstance()得到
    private final static  Singlet singlet = new Singlet();
    
    //获取该类
    public static Singlet  getInstance(){

        return singlet;
    }


}

提到懒汉式单例模式 不能不一见如故了 又得引用spring bean了 嘿嘿


image.png

接着看下spring-bean.xsd lazy-init的说明 默认不开启懒汉模式的 在spring中如果你开启了懒汉模式 以为着只有你使用这个bean时才会被初始化


image.png

直接看代码 探探究竟

//懒汉式  当有访问时才加载实例
public class Singlet2 {

    private Singlet2(){

    }
    //这里类变量初始空引用 
    private static Singlet2 singlet2 = null;
    //调用此方式时有个逻辑判断 有实例则直接返回类变量 没有则实例化该类 真正实现了懒加载
    public static Singlet2 getSinglet2(){

        //进行的这步内容会发生线程安全问题 并发情境下  故不考虑
       /* if(singlet2==null){
            singlet2 = new Singlet2();
        }*/
       if(singlet2 == null){
           synchronized (Singlet2.class){
               singlet2 = new Singlet2();
           }
       }

        return  singlet2;
    }

}

一见如故,我是FirmJack

相关文章

  • 单例模式

    3、单例模式(Singleton) 单例对象(Singleton)是一种常用的设计模式。在Java应用中,单例对象...

  • 设计模式-单例模式(Singleton)

    单例模式(Singleton) 单例对象(Singleton)是一种常用的设计模式。在Java应用中,单例对象能保...

  • JAVA设计模式 - 单例模式

    JAVA设计模式 - 单例模式 单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一...

  • 设计模式(二)——创建型模式

    一、 单例模式 1. 什么是单例模式 单例模式(Singleton Pattern)是 Java 中最简单的设计模...

  • 4、创建型模式之单态模式

    单例模式 单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一,也叫单态模式。这种类...

  • 设计模式——单例模式

    设计模式——单例模式 单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一,这种类型...

  • 设计模式

    单例模式 单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式...

  • 单例模式(Singleton Pattern)

    一、单例模式简介 1. 定义 单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一,...

  • JAVA基础之单例

    JAVA单例的几种形式以及其优缺点。 Android 中的单例模式 - 简书 单例的定义:Singleton模式的...

  • 设计模式《一》单例模式

    单例模式 单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属...

网友评论

    本文标题:一见如故之java单例模式 singleton

    本文链接:https://www.haomeiwen.com/subject/ehjomxtx.html