日期:2010-09-07 浏览次数:20452 次
单例模式的存在在一些情况下是比较有意义的,如BlogEngine的站点配置就是采用的单例模式,而且它的载入和保存的代码是相当经典的,有兴味可以看看它的源代码。
由于asp.net是编译型的,所以单例不断会存在于这个使用程序的生命周期里,真正可以做到这个实例在使用程序生命周期中的独一性。
php的单例模式的实现大致如下:
class Stat{
static $instance = NULL;
static function getInstance(){
if(self::$instance == NULL){
self::$instance = new Stat();
}
return self::$instance;
}
private function __construct(){
}
private function __clone(){
}
function sayHi(){
return "The Class is saying hi to u ";
}
}
echo Stat::getInstance()->sayHi();
class Stat{
static $instance = NULL;
static function getInstance(){
if(self::$instance == NULL){
self::$instance = new Stat();
}
return self::$instance;
}
private function __construct(){
}
private function __clone(){
}
function sayHi(){
return "The Class is saying hi to u ";
}
}
echo Stat::getInstance()->sayHi();
但,PHP是一种解释型的言语,在这里用单例好像看不出实际的用途,一旦整个页面执行完,变量也就消逝了。
static function getInstance(){
if(self::$instance == NULL){
self::$instance = new Stat(); //这里随着页面的重载会再次执行
}
return self::$instance;
}
static function getInstance(){
if(self::$instance == NULL){
self::$instance = new Stat(); //这里随着页面的重载会再次执行
}
return self::$instance;
}
我接触PHP时间不长,以上写出来的只是在C#与PHP二种不同言语环境下对单例模式的认知,也许这个例子只是为了说明模式可以用很多种言语来实现,但并不意味着在各种言语环境下都能真正起作用。
asp.net中的单例是在整个使用程序域独一。PHP中的单例只在整个页面周期内独一