观察者模式,软件设计中常用设计模式之一
使用场景多用于一个对象的一个行为会影响多个对象的场景,例如某项操作需要上报多个日志等
使用php实现:
<?php
//观察者接口
interfaceob{
public functionupdate();
}
//观察者1
classobOneimplementsob{
public functionupdate()
{
echo"ob1\r\n";
}
}
//观察者2
classobTwoimplementsob{
public functionupdate()
{
echo"ob2\r\n";
}
}
//被观察者
classbeOb
{
protected$obs;
protected functionaddOb(ob$ob){
$this->obs[]=$ob;
}
public functionact(){
echo"正常逻辑\r\n";
$this->addOb(newobOne());
$this->addOb(newobTwo());
$this->notify();
}
protected functionnotify(){
if(empty($this->obs)){
return true;
}
foreach($this->obsas$ob){
$ob->update();
}
return true;
}
}
$beOb=newbeOb();
$beOb->act();