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

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


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

    
  • 相关阅读:
    php 类文件加载 Autoloader
    windows下配置nginx+php
    crontab 定时调度
    PHP 常见语法 集合
    php socket
    tengine + mysql + nginx + php
    yii2 [行为] behaviors 拦截器
    .htaccess 语法以及应用
    nginx 安装
    Nginx HTTP负载均衡和反向代理配置
  • 原文地址:https://www.cnblogs.com/gccbuaa/p/6733644.html
Copyright © 2011-2022 走看看