欢迎您访问我的笔记本站旨在于记录一些平时工作中遇到的一些问题和解决方法,方便查阅,部分内容来源于网络,如有侵权请联系我删除
  • 微信微信
您现在的位置是:首页 > PHP后端

PHP设计模式--观察者模式-[原创]

日期:2018-10-23 14:47:54 作者:tanyi 来源:我的笔记 浏览:837 次
观察者模式目前我能理解的就是降低程序的耦合,方便后期的代码维护,比如某个流程的业务逻辑比较复杂,处理的东西比较多的话,代码堆积在一起对于后期的维护非常困难,如果能把一些逻辑独立出来那就比较方便了,需要改哪一个就改哪一个,不用担心会影响其他业务

一个简单的例子:

// 主题接口
interface Subject{
    public function register(Observer $observer);
}
// 观察者接口
interface Observer{
    public function call_back($obj);
}
// 主题类--商品购买
class Action implements Subject{
    public $_observers=array();
    public $user='';
    public function register(Observer $observer){
        $this->_observers[]=$observer;
    }

    public function buy(){
        //购买逻辑处理
        $this->user='测试';
        //循环调用需要通知的处理类、比如购买成功短信通知用户
        foreach ($this->_observers as $observer) {
            $observer->call_back($this);
        }

    }
}


//发送短信
class Msg implements Observer{
    public function call_back($obj){
        echo $obj->user.'你好,xxx商品已购买成功<hr/>';
    }
}
//赠送积分
class GiveIntegral implements Observer{
    public function call_back($obj){
        echo $obj->user.'你好,系统赠送xxx积分<pre>';
    }
}



// 应用实例
$action=new Action();
$action->register(new Msg());
$action->register(new GiveIntegral());
$action->buy();

image.png

提交评论
评论列表