資訊**的今天,根據自己的愛好去訂閱相關的資訊是很有必要的。
今天我們就來演示如何用觀察者模式來實現訂閱訊息的更新推送。
首先我們定義乙個主題(抽象通知者)抽象類:
abstract
class
theme
function
removesubscriber
(subscriber $sub)
}$this->subscriber=$temp;
} function
notify
() }
}
然後定義一些主題如下:
class
itextends
theme
//包含it主題獨有的一些特定資訊
......................
}
class
sports
extends
theme
//包含體育主題獨有的一些特定資訊
......................
}
接著定義訂閱者(抽象觀察者)介面:
inte***ce
subscriber
再來定義幾個訂閱者(具體觀察者)
class
changeui
implements
subscriber
}
class
remind
implements
subscriber
}
客戶端**:
//例項化主題物件
$themeit
=new it();
$themesports
=new sports();
//例項化訂閱者
$ui=
new changeui();
$remind
=new remind();
//設定it訊息更新時彈框通知並且重新整理介面,體育訊息更新時僅重新整理介面
$themeit
->addsubscriber($ui);
$themeit
->addsubscriber($remind);
$themesports
->addsubscriber($ui);
$themeit
->notify();
$themesports
->notify();
總結
觀察者模式定義了一種一對多的依賴關係,讓多個觀察者同時監聽乙個主題,當主題發生改變時,通知所有觀察者實現更新。
觀察者模式的應用
在層與層之間如果存在著直接的相互依賴的關係,那麼可以利用觀察者模式將直接的依賴關係轉化成間接的依賴關係,並且用這種模式降低層與層之間的偶合度.class fg o sgobserver 註冊為作業系統的接收者的物件通過該介面來接收系統訊息 virtual void o essage fg messa...
觀察者模式的思考
概念 定義物件間的一種一對多的依賴關係,讓多個觀察者物件同時監聽某乙個主題物件。當乙個物件的狀態發生改變時,所有依賴與它的物件都得到通知並被自動更新。其基本思想是 不在讓各個類之間的耦合性那麼強,而是建立觀察者和監聽者,最重要的是觀察者和監聽者之間的介面,這樣就可以讓 之間的耦合性降低,利於維護並增...
觀察者模式的總結
什麼是觀察者模式呢?觀察者模式最常用的地方是gui系統 訂閱 發布系統。他在開發中使用率還是非常高的,因為這個模式最重要的乙個作用就是解耦,將觀察者和被觀察者解耦,使得它們之間依賴性更小。還是上 吧 public class coder implements observer override pu...