php 观察者模式

先不说定义,先来看运用场景,这些定义咋的,老蒙,由场景想到设计模式显然是比较好理解的一个方法。

场景:新用户名注册完 要完成的工作:1,新用户送积分  2,新用户送优惠劵 3,记录新用户log日志

观察者模式:

  通过场景我们可以分析,当用户注册完,系统要执行一系列业务逻辑,我们可以把这一系列业务逻辑看成观察者,分别有积分类观察者,优惠劵类观察者,log类观察者,

这些观察者一直在监听用户类,当用户执行注册这个动作之后,观察者们各自开始自己的业务逻辑。

 

分析:整个运用场景可以有两个类完成,一个是观察者类,另一个是被观察类(主题),他们有各自的接口,观察者类接口是接收到被观察者的通知之后,更新状态,被观察者接口是

 

<?php
abstract  class observer{
    abstract function deal();
}
abstract class subject{
    abstract function addObserver($object);
    abstract function notify();
}

class coupon extends observer{
    function deal(){
        echo "this is coupon";
    }
}

class point extends observer{
    function deal(){
        echo "this is point";
    }
}

class log  extends observer{
    function deal(){
        echo "this is log";
    }
}

class action extends subject{
    private $observer;
    function addObserver($obj){
        $this->observer[]=$obj;
    }
    function notify(){
        foreach ($this->observer as $obj){
            $obj->deal();
        }
    }
}

$action=new action();

$action->addObserver(new point());
$action->addObserver(new coupon());
$action->addObserver(new log());
$action->notify();

posted on 2015-04-17 14:57  varliny  阅读(151)  评论(0)    收藏  举报

导航