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

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

时间:2014-10-14 22:54:39      阅读:237      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   io   使用   ar   java   sp   div   

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方法。

哦,对了,先看看一个测试结果:


bubuko.com,布布扣bubuko.com,布布扣bubuko.com,布布扣


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

        对的,这个方法解决了序列化破坏单例模式的问题


        遗留:反射可以破坏单例模式



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

标签:style   blog   http   io   使用   ar   java   sp   div   

原文地址:http://blog.csdn.net/skydream_xu/article/details/40083923

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