php设计模式之单例模式
添加时间:2013-5-15 点击量:
单例模式:简单的说,一个对象只负责一个特定的任务。
单例类:
1.机关函数须要标识表记标帜为private,单例类不克不及再其他类中实例化,只能被其自身实例化
2.拥有一个保存类的实例静态成员变量
3.拥有一个接见这个实例的公共的静态办法。[常用getInstance()办法进行实例化单例类,经由过程instanceof操纵符可以检测到此类是否已经被实例化]
注:须要创建__clone()办法防治对象被复制
感化:
1.php的应用首要用于数据库,所以一个应用中会存在多量的数据库操纵,应用单例模式,则可以避免多量new操纵消费的资料
2.若是体系中须要一个类来全局把握某些设备信息,那么应用单例模式可以很便利的实现。参照ZF的FrontController项目组
3.在一个页面恳求汇总,便于进行调试,因为所有的代码都集中在一个类中,我们可以在类中设置钩子,输出日记,从而避免处处var_dump,echo。
<?php
class DanLi{
//静态成员变量
private static ¥_instance;
//私有的机关办法
private function __construct(){
}
//防止对象被克隆
public function __clone(){
trigger_error(Clone is not allow!,E_USER_ERROR);
}
public static function getInstance(){
if(!(self::¥_instance instanceof self)){
self::¥_instance = new self;
}
return self::¥_instance;
}
public function test(){
echo ok;
}
}
//错误:¥danli = new DanLi(); ¥danli_clone = clone ¥danli;
//正确:¥danli = DanLi::getInstance(); ¥danli->test();
?>
彼此相爱,却不要让爱成了束缚:不如让它成为涌动的大海,两岸乃是你们的灵魂。互斟满杯,却不要同饮一杯。相赠面包,却不要共食一个。一起歌舞欢喜,却依然各自独立,相互交心,却不是让对方收藏。因为唯有生命之手,方能收容你们的心。站在一起却不要过于靠近。—— 纪伯伦《先知》
单例模式:简单的说,一个对象只负责一个特定的任务。
单例类:
1.机关函数须要标识表记标帜为private,单例类不克不及再其他类中实例化,只能被其自身实例化
2.拥有一个保存类的实例静态成员变量
3.拥有一个接见这个实例的公共的静态办法。[常用getInstance()办法进行实例化单例类,经由过程instanceof操纵符可以检测到此类是否已经被实例化]
注:须要创建__clone()办法防治对象被复制
感化:
1.php的应用首要用于数据库,所以一个应用中会存在多量的数据库操纵,应用单例模式,则可以避免多量new操纵消费的资料
2.若是体系中须要一个类来全局把握某些设备信息,那么应用单例模式可以很便利的实现。参照ZF的FrontController项目组
3.在一个页面恳求汇总,便于进行调试,因为所有的代码都集中在一个类中,我们可以在类中设置钩子,输出日记,从而避免处处var_dump,echo。
<?php
class DanLi{
//静态成员变量
private static ¥_instance;
//私有的机关办法
private function __construct(){
}
//防止对象被克隆
public function __clone(){
trigger_error(Clone is not allow!,E_USER_ERROR);
}
public static function getInstance(){
if(!(self::¥_instance instanceof self)){
self::¥_instance = new self;
}
return self::¥_instance;
}
public function test(){
echo ok;
}
}
//错误:¥danli = new DanLi(); ¥danli_clone = clone ¥danli;
//正确:¥danli = DanLi::getInstance(); ¥danli->test();
?>