当前位置: 首页 > 图文教程 > 网络编程 > PHP > PHP教程:典型的单例模式版本

PHP
MySQL安全性指南
长沙发上的对话(一)
长沙发上的对话(二)
长沙发上的对话(三)
长沙发上的对话(四)
《PHP程序设计》序
《PHP程序设计》第一章 什么是PHP?
PHP4的新特征
php3的ODBC函数
初学入门 PHP 和 MySQL
《PHP程序设计》 第二章 安装PHP
《PHP程序设计》 第三章 PHP中的数据处理
《PHP程序设计》 第四章 程序控制
《PHP程序设计》 第五章 中场一:数据库连接
PHP4中的SESSION管理
开发大型PHP项目的方法(一)
开发大型PHP项目的方法(二)
开发大型PHP项目的方法(三)
开发大型PHP项目的方法(四)
开发大型PHP项目的方法(五)

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-28   浏览: 185 ::
收藏到网摘: n/a

有时,我们需要在应用程序中只允许存在一个类的实例。

如windows的任务管理器,永远只可能出现一个,这就是典型的单例模式。

单例模式提供一个全局的访问点,并且让外部无法对该类进行new()

典型的单例模式版本:

public sealed class Singleton  
{  
static Singleton instance=null;  
Singleton()  
{  
}  
public static Singleton Instance  
{  
get 
{  
if (instance==null)  
{  
instance = new Singleton();  
}  
return instance;  
}  
}  
}
public sealed class Singleton
{
static Singleton instance=null;
Singleton()
{
}
public static Singleton Instance
{
get
{
if (instance==null)
{
instance = new Singleton();
}
return instance;
}
}
}

但这并不是一个好的代码,因为这样的代码不是安全的,很可能被其它线程修改。

第二个版本:

public sealed class Singleton  
{  
static Singleton instance=null;  
static readonly object padlock = new object();  
Singleton()  
{  
}  
public static Singleton Instance  
{  
get 
{  
lock (padlock)  
{  
if (instance==null)  
{  
instance = new Singleton();  
}  
return instance;  
}  
}  
}  
}
public sealed class Singleton
{
static Singleton instance=null;
static readonly object padlock = new object();
Singleton()
{
}
public static Singleton Instance
{
get
{
lock (padlock)
{
if (instance==null)
{
instance = new Singleton();
}
return instance;
}
}
}
}

使用了lock关键字,确保只能有一个线程可以访问它。