欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

PHP学习之观察者模式

程序员文章站 2022-07-02 17:12:53
observers[]=$observers; } /** * 花钱方法 * * @return void */ function buy() { //当被观察者做出这个行为的时候,让观察者得到通知,并且做出一定的反应 foreach($this->observers as $girl){ ... ......
<?php
//观察者模式涉及到两个类
//男人类    和女朋友类
//男人类对象小明,  女朋友类对象小花、小丽
class man
{
    //用了存放观察者
    protected $observers=[];

    /**
     * 添加观察者方法
     *
     * @param [type] $observers
     * @return void
     */
    function addobserver($observers)
    {
        $this->observers[]=$observers;
    }

    /**
     * 花钱方法
     *
     * @return void
     */
    function buy()
    {
        //当被观察者做出这个行为的时候,让观察者得到通知,并且做出一定的反应
        foreach($this->observers as $girl){
            $girl->dongjie();
        }
    }

    /**
     * 删除观察者方法
     *
     * @param [type] $observer
     * @return void
     */
    function delobserver($observer)
    {
        $key=array_search($observer,$this->observers);
        array_splice($this->observers,$key,1);
    }
}

class girlfriend
{
    function dongjie()
    {
        echo '你的男朋友正在花钱,马上冻结他的银行卡!<br/>';
    }
}

//创建对象
$xiaoming=new man();
$xiaohua=new girlfriend();
$xiaoli=new girlfriend();

//添加观察者
$xiaoming->addobserver($xiaohua);
$xiaoming->addobserver($xiaoli);
$xiaoming->delobserver($xiaoli);

$xiaoming->buy();