PHP-设计模式-观察者模式

观察者模式:一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。
1:定义一个项目subjects抽象类 ,一个观察者observers抽象类。
subject 实现三个方法,1,添加add ,删除:remove ,通知 :notify。
observe 实现update 方法
格式和组合模式有点类似。

<!DOCTYPE html> 
<html> 
<body> 
<?php 
header("Content-type: text/html; charset=utf-8");
abstract class subjects{
    function add(observers $observer){}
    function remove(observers $observer){}
    function notify(){}
}
abstract class observers{
    function update(){}
}
class subject extends subjects{
    public $arr = array();
    function add(observers $observer){
        array_push($this->arr,$observer);
    }
    function remove(observers $observer){
        $a = array_search($observer,$this->arr);
        unset($this->arr[$a]);
    }
    function notify(){  
        foreach($this->arr as $a){
            $a->update();
        }
    }
}
class observe extends observers{
    public $name = null;
    function __construct($str){
        $this->name = $str;
    }
    function update(){
        echo "{$this->name}observer";
    }
}
$a = new observe('我是第一个');
$b = new observe('我是第二个');
$ob = new subject();

$ob->add($a);
$ob->add($b);
$ob->remove($a);
$ob->notify();
//输出  我是第二个observer
?> 

</body> 
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值