永利最大(官方)网站

Java Singleton单例模式详解

原创|其它|编辑:郝浩|2009-09-29 13:51:17.000|阅读 702 次

概述:本文详细介绍了Java Singleton单例模式。

#慧都22周年庆大促·界面/图表报表/文档/IDE/IOT/测试等千款热门软控件火热促销中>>

  Singleton (单例模式)

  Intent :Ensure a class only has one instance , and provide a global point of access of it.

  瞎谈:就是保证一个类只有一个实例,并且提供一个全局可访问的点。打个比方,广州限制每户人家养狗,但是只能养一条。一开始你没有狗,你去买一条。若干年后,狗不行失踪了。你为了填补寂寞的空虚,别人又送你一条(或者还是你自己买的)。我们不关注你的狗来源,只保证你家的狗每时每刻就一条。你为了确保以后养狗方便,就到保险公司办了保险,他们承诺,你的狗要是出现意外事故,他们负责陪一条给你。从此,你自由了,狗的事情交给别人了,而且别人也保证只给一条给你。

  正经:很多时候我们要保证类的实例只有一个。我们可能在自己的代码中判断需要的类的实例有无,无就new一个。这样看似不错。问题是,你用到这个类的地方有n个,这样你就需要n个判断。为什么不把这个职责交给类本身呢?然后让类提供一个接口访问

  代码实现:

 public class Singleton
  {
  private static Singleton singleton=null;
  private Singleton()
  {}
  public static Singleton instance()
  {
  if(singleton==null)
  singleton = new Singleton();
  return singleton
  return singleton;
  }
  }

  有无问题:碰上多线程怎么办?凉拌了。加锁吧,或者。。。前人总结的经验,有3中方法

  1. 直接加锁

 public class Singleton
  {
  private static Singleton singleton=null;
  private Singleton()
  {}
  public static synchronized Singleton instance()
  {
  if(singleton==null)
  singleton = new Singleton();
  return singleton
  return singleton;
  }
  }

  2. 早期实例化

 public class Singleton
  {
  private static Singleton singleton = new Singleton();
  private Singleton();
  public static Singleton getInstance()
  {
  return singleton;
  }
  }

  3. 双重检测锁

 public class Singleton
  {
  private volatile static Singleton singleton=null;
  private Singleton(){}
  public static Singleton getInstance()
  {
  if(singleton==null)
  { synchronized(Singleton.class)
  {
  singleton=new Singleton();
  }
  }
  return singleton;
  }


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@hmdbvip.cn

文章转载自:IT专家网

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP
PM娱乐城网络现金网站(官方)网站/网页版登录入口/手机版登录入口-最新版(已更新) PM娱乐城最大(官方)网站/网页版登录入口/手机版登录入口-最新版(已更新) 永利外围最新(官方)网站/网页版登录入口/手机版登录入口-最新版(已更新) 网络权威朗驰娱乐大全(官方)网站/网页版登录入口/手机版登录入口-最新版(已更新) 永利真人网上足球(官方)网站/网页版登录入口/手机版登录入口-最新版(已更新) 利记最火十大网(官方)网站/网页版登录入口/手机版登录入口-最新版(已更新) boyu·博鱼权威网络足球(官方)网站/网页版登录入口/手机版登录入口-最新版(已更新) PM娱乐城网上足球(官方)网站/网页版登录入口/手机版登录入口-最新版(已更新)