PHP教程:典型的单例模式版本_PHP技巧_黑客防线网安服务器维护基地--Powered by WWW.RONGSEN.COM.CN

PHP教程:典型的单例模式版本

作者:黑客防线网安PHP教程基地 来源:黑客防线网安PHP教程基地 浏览次数:0

本篇关键词:模式版本典型教程
黑客防线网安网讯:  有时,我们需要在应用程序中只允许存在一个类的实例。    如windows的任务管理器,永远只可能出现一个,这就是典型的单例模式。    单例模式提供一个全局的访问点,并且让外部无...
  有时我们需要在应用程序中只允许存在一个类的实例
  
  如windows的任务管理器永远只可能出现一个,这就是典型的单例模式
  
  单例模式提供一个全局的访问点,并且让外部无法对该类进行new()
  
  典型的单例模式版本:
  
  publicsealedclassSingleton
  
  {
  
  staticSingletoninstance=null;
  
  Singleton()
  
  {
  
  }
  
  publicstaticSingletonInstance
  
  {
  
  get
  
  {
  
  if(instance==null)
  
  {
  
  instance=newSingleton();
  
  }
  
  returninstance;
  
  }
  
  }
  
  }
  
  publicsealedclassSingleton
  
  {
  
  staticSingletoninstance=null;
  
  Singleton()
  
  {
  
  }
  
  publicstaticSingletonInstance
  
  {
  
  get
  
  {
  
  if(instance==null)
  
  {
  
  instance=newSingleton();
  
  }
  
  returninstance;
  
  }
  
  }
  
  }
  
  但这并不是一个好的代码,因为这样的代码不是安全的,很可能被其它线程修改。
  
  第二个版本:
  
  publicsealedclassSingleton
  
  {
  
  staticSingletoninstance=null;
  
  staticreadonlyobjectpadlock=newobject();
  
  Singleton()
  
  {
  
  }
  
  publicstaticSingletonInstance
  
  {
  
  get
  
  {
  
  lock(padlock)
  
  {
  
  if(instance==null)
  
  {
  
  instance=newSingleton();
  
  }
  
  returninstance;
  
  }
  
  }
  
  }
  
  }
  
  publicsealedclassSingleton
  
  {
  
  staticSingletoninstance=null;
  
  staticreadonlyobjectpadlock=newobject();
  
  Singleton()
  
  {
  
  }
  
  publicstaticSingletonInstance
  
  {
  
  get
  
  {
  
  lock(padlock)
  
  {
  
  if(instance==null)
  
  {
  
  instance=newSingleton();
  
  }
  
  returninstance;
  
  }
  
  }
  
  }
  
  }
  
  使用了lock关键字,确保只能有一个线程可以访问它。
  
  
    黑客防线网安服务器维护方案本篇连接:http://www.rongsen.com.cn/show-17506-1.html
网站维护教程更新时间:2012-09-21 05:20:10  【打印此页】  【关闭
我要申请本站N点 | 黑客防线官网 |  
专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479

footer  footer  footer  footer