zoukankan      html  css  js  c++  java
  • 在论设计模式----单例模式

    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,太不可思议了,

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


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

    
  • 相关阅读:
    挖矿是如何产生比特币的?
    影响世界的100个管理定律
    震撼人心的战争类背景音乐
    一个美国女警的工作记录(转载
    李昌镐:苍老的青春(转载)
    博主简介
    python 中判断变量是否定义
    Reading geometries
    Writing geometries
    Accessing data using cursors
  • 原文地址:https://www.cnblogs.com/gccbuaa/p/6733644.html
Copyright © 2011-2022 走看看