//不同的對象,會有不同的處理方式
/**
* 場景:一個事件發生後,要執行一連串更新操作.傳統的編程方式,
* 就是在事件的代碼之後直接加入處理邏輯,
* 當更新得邏輯增多之後,代碼會變得難以維護.這種方式是耦合的
* ,侵入式的,增加新的邏輯需要改變事件主題的代碼
* 觀察者模式實現了低耦合,非侵入式的通知與更新機制。
*/
interface Wemessage
{
// 觀察者要實現的接口
public function send();
}
class Wepush implements Wemessage // 最終實現微信消息的類
{
public function send()
{
echo '發送微信消息';
}
}
class Payafter
{
// 修改訂單信息
private $_ob = []; // 觀察者模式
// 修改訂單信息
public function register($obj) // 註冊
{
$this->_ob = $obj;
}
public function trigger() // 統一執行訪問
{
if (!empty($this->_ob)) {
foreach ($this->_ob as $value) {
$value->send();
}
}
}
}
$payAfter = new Payafter();
$payAfter->register(new Wepush()); // 註冊觀察者
$payAfter->tirgger(); // 執行代碼