class order{
//1.存放观察容器 protected $observers = []; //2.观察者新增 public function add($type,$obj){ $this->observers[$type][] = $obj; } //3.运行观察者 public function obServer($type){ if(isset($this->observers[$type])){ foreach($this->observers[$type] as $observer){ $ob = new $observer; $ob->update(); } } } //下单购买流程 public function create(){ echo '购买创建成功!'; $this->obServer('buy'); }
}
/** * Interface OrderObserver观察者接口 */ interface OrderObserver{ function update($order); } /** * Class OrderEmail观察者 */ class OrderEmail implements OrderObserver{ public function update($order){ echo "send email"; } } /** * Class OrderStatus观察者 */ class OrderStatus implements OrderObserver{ public function update($order){ echo "status success"; } } /** * Class OrderVCode观察者 */ class OrderVCode implements OrderObserver{ public function update($order){ echo "vcode success"; } } $ob = new order(); $ob->add("buy","OrderEmail"); $ob->add("buy","OrderStatus"); $ob->add("buy","OrderVCode"); $ob->create();
最后打印出的结果为
购买创建成功!send emailstatus successvcode success