• 在论设计模式----单例模式


    import java.io.Serializable;
    
    public class Singleton implements Serializable
    {
       private Singleton()
       {
    	   
       }
       
       private static class SingletonHolder
       {
    	   private static final Singleton INSTANCE  = new Singleton();
       }
       
       
       public static Singleton getInstance()
       {
    	   return SingletonHolder.INSTANCE;
       }
       
       private Object readResolve()
       {
    	   return SingletonHolder.INSTANCE;
       }
    }
    

    上面这段代码有什么不同?

    让我们先回顾下单例模式的俩种形式的优缺点:

    懒汉模式:存在对象锁。锁竞争对性能有一定的影响

    饿汉模式:一開始就初始化单例对象,假设单例对象初始化时间非常长(大对象),添加类载入的耗时


    而上面代码利用内部类,类载入的时候不初始化单例对象,在第一次使用的时候才初始化单例对象。因为内部类的载入机制。有攻克了锁的问题,


    说道这里读者已经能够知道内部类的作用,可是还有个不同没有提到呀,多了private方法。

    哦。对了。先看看一个測试结果:



           结果为 True,太不可思议了,

            对的,这种方法攻克了序列化破坏单例模式的问题


            遗留:反射能够破坏单例模式

    
  • 相关阅读:
    sql函数 StringSplit(SELECT * from Split('黄色,蓝色,黑色',','))
    跨表循环写插入sql语句
    将ExCel导入数据库
    行转列
    js正则匹配
    ASP.NET下载远程图片保存到本地的方法、保存抓取远程图片
    C# 解析json类型字符串
    上传图片
    存储过程学习
    //js验证数字输入,以及保留俩位
  • 原文地址:https://www.cnblogs.com/gccbuaa/p/6733644.html
Copyright © 2020-2023  润新知