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

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、枚举类

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

扫描二维码关注公众号,回复: 38907 查看本文章

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

  缺点:不是懒加载

代码如下:

复制代码
package sington;

public enum EnumSing {

    INTANCE;

    public void function(){
        System.out.println("具体执行方法");
    }
    public static EnumSing getIntance(){
        return INTANCE;
    }
}
复制代码

猜你喜欢

转载自www.cnblogs.com/yeyongjian/p/8904929.html