} } }

    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();

    ?>



    彼此相爱,却不要让爱成了束缚:不如让它成为涌动的大海,两岸乃是你们的灵魂。互斟满杯,却不要同饮一杯。相赠面包,却不要共食一个。一起歌舞欢喜,却依然各自独立,相互交心,却不是让对方收藏。因为唯有生命之手,方能收容你们的心。站在一起却不要过于靠近。—— 纪伯伦《先知》
    分享到: