定義物件之間的一種一對多依賴關係,使得每當一個物件狀態改變時,其相關依賴物件皆會被通知並被自動更新。 觀察者模式的別名包括發布-訂閱(Publish/Subscribe)模式、模型-視圖(Model/View)模式、來源-監聽器(Source/Listener)模式或從屬者(Dependents)模式。 觀察者模式是一種物件行為型模式。 觀察者模式定義物件的一對多依賴,這樣一來,當一個物件改變狀態時,它的所有依賴者都會收到通知並自動更新!
<?php /** * 观察者模式 * @author: Mac * @date: 2012/02/22 */ abstract class Pa { private $_observers = array(); public function register($sub) { } public function trigger() { } } class Paper extends Pa { /* 主题 */ private $_observers = array(); // 存放new的对象 public function register($sub) { /* 注册观察者 */ $this->_observers[] = $sub; } public function trigger() { /* 外部统一访问 */ if (!empty($this->_observers)) { foreach ($this->_observers as $observer) { $observer->update(); } } } } /** * 观察者要实现的接口 */ interface Observerable { public function update(); } class Subscriber1 implements Observerable //观察者 { public function update() { echo "观察者1收到执行通知 执行完毕\n"; } } class Subscriber2 implements Observerable //观察者2 { public function update() { echo "观察者2收到执行通知 执行完毕\n"; } } /* 测试 */ $paper = new Paper(); $paper->register(new Subscriber1()); $paper->trigger();
觀察者模式是一種使用頻率非常高的設計模式,無論是行動應用、網路應用或桌面應用,觀察者模式幾乎無所不在,它為實現物件之間的連動提供了一套完整的解決方案,凡是涉及一對一或一對多的物件互動場景都可以使用觀察者模式。
相關推薦:
#以上是php設計模式之觀察者模式詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!