美文网首页Java 杂谈javaJava
java设计模式-单例模式(singleton)

java设计模式-单例模式(singleton)

作者: yiqiquhuxi | 来源:发表于2019-07-03 16:48 被阅读38次

    单例模式(singleton),属于创建型模式

    单例模式实现方法有很多种,今天要讲的是其中两种,也是最简单,最常见的两种,饿汉模式和懒汉模式。

    单例模式,顾名思义,在整个系统中,该对象只有一个实例,其特性和我们类中static修饰的变量差不多,不论多少线程操作该变量,该变量线程共享,实例只有一份。有人会问,那直接用static不就行了,干嘛还要用单例模式呢,因为static修饰的只是变量,而我们要操作的是对象,java抽象出来的对象。单例原则:

    1:保证对象构造方法属于私有,不对外开放。
    2:通过一个静态方法或者枚举返回单例类对象的唯一实例。
    3:确保单例类的对象有且只有一个,尤其是多线程的环境下。
    4:确保单例类对象在反序列化时不会重新构建对象



    饿汉模式(对象先创建出来,我饿我先吃为敬)


    饿汉模式



    懒汉模式(需要时候我在动,需要时候我在创建对象)

    懒汉模式

    注意点:

            饿汉模式属于线程安全,多线程情况下,我对象是先创建好的,不论谁来调用, 我给它提前创建好的对象,保证线程安全。
            懒汉模式属于线程非安全,因为有if判断,如果有线程正在做if判断时候,另外线程正好也进来if,而第一个线程并没有执行完毕。这时候会返回两个新的对象,有违背了单例模式的原则。

    应用场景:
    1:电脑的资源管理器,不论点几下,只会有一个窗口弹出来。
    2:电脑的回收站。
    3:网站的计数器。
    4:数据库连接池,为避免频繁打开和关闭数据库。

    JDK使用实例:
    java.lang.Runtime#getRuntime()
    java.awt.Desktop#getDesktop()
    java.lang.System#getSecurityManager()

    相关文章

      网友评论

        本文标题:java设计模式-单例模式(singleton)

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