单例模式--创建型设计模式

Posted 大佬健

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单例模式--创建型设计模式相关的知识,希望对你有一定的参考价值。

1.饿汉式

  优点:线程安全

  缺点:立即加载

2.懒汉式

  优点:懒加载

  缺点:线程不安全(可以用双重锁机制来保证线程安全,但是调用效率低)

3.内部类型单例模式,前两种基本不用,因为这种包含前两种的优点

  优点:1、线程安全,2、懒加载

代码如下:

技术分享图片
package sington;

public class InnerSing {

    private InnerSing(){
    }

    public static InnerSing getIntance(){
        return InnerClass.instance;
    }

    private static class InnerClass {
        private static InnerSing instance = new InnerSing();
    }
}
技术分享图片

 4、枚举类

  优点:前三种都没法避免使用反射/序列化(即写入硬盘再读取硬盘创建对象)来创建对象,

      而枚举类可以;(其实可以通过构造器代码写:对象非空判断+抛错可以防止反射创建,而重写readResolve()方法可以防止反系列化构造多一个对象)

  缺点:不是懒加载

代码如下:

技术分享图片
package sington;

public enum EnumSing {

    INTANCE;

    public void function(){
        System.out.println("具体执行方法");
    }
    public static EnumSing getIntance(){
        return INTANCE;
    }
}
技术分享图片

 

以上是关于单例模式--创建型设计模式的主要内容,如果未能解决你的问题,请参考以下文章

设计模式 - 创建型模式_7种单例模式实现

设计模式 - 创建型模式_7种单例模式实现

创建型模式之单例模式

Java设计模式——创建型模式之单例模式

设计模式创建型-单例模式

[设计模式C++go]创建型模式:单例模式