PHP学习之观察者模式

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