码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2018-04-22 10:53:53      阅读:216      评论:0      收藏:0      [点我收藏+]

标签:线程   内部类   enum   func   枚举类   ack   硬盘   oid   判断   

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;
    }
}
技术分享图片

 

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

标签:线程   内部类   enum   func   枚举类   ack   硬盘   oid   判断   

原文地址:https://www.cnblogs.com/yeyongjian/p/8904929.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!