<?php
//-----------------------------------------------
// 利用SPL实现观察者模式
//-----------------------------------------------
/**
* 订单管理系统
* Class OmsObserver
*/
class OmsObserver implements SplObserver
{
public function update(SplSubject $subject) {
echo ' module-name: oms order-no: ' . $subject->getOrderNumber();
// todo
echo ' result: send success' . PHP_EOL;
}
}
/**
* 仓库管理系统
* Class WmsObserver
*/
class WmsObserver implements SplObserver
{
public function update(SplSubject $subject) {
echo ' module-name: wms order-no: ' . $subject->getOrderNumber();
// todo
echo ' result: send success' . PHP_EOL;
}
}
/**
* 运输管理系统
* Class TmsObserver
*/
class TmsObserver implements SplObserver
{
public function update(SplSubject $subject) {
echo ' module-name: tms order-no: ' . $subject->getOrderNumber();
// todo
echo ' result: send success' . PHP_EOL;
}
}
class OrderCenterSubject implements SplSubject
{
private $_observers;
private $_orderNumber;
public function __construct($orderNumber) {
$this->_observers = new SplObjectStorage();
$this->_orderNumber = $orderNumber;
}
public function attach(SplObserver $observer) {
$this->_observers->attach($observer);
}
public function detach(SplObserver $observer) {
$this->_observers->detach($observer);
}
public function notify() {
foreach ($this->_observers as $observer) {
$observer->update($this);
}
}
public function getOrderNumber() {
return $this->_orderNumber;
}
}
//测试
$omsObserver = new OmsObserver();
$wmsObserver = new WmsObserver();
$tmsObserver = new TmsObserver();
$orderCenterSubject = new OrderCenterSubject("10030522161715");
$orderCenterSubject->attach($omsObserver);
$orderCenterSubject->attach($wmsObserver);
$orderCenterSubject->attach($tmsObserver);
$orderCenterSubject->notify();
PHP 利用SPL实现观察者模式
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
相关阅读更多精彩内容
- java中实现观察者模式有很多种方式,上一篇文章介绍到了,利用callback的方式实现了回调,这篇文章准备介绍的...