觀察者模式 訂製你的今日頭條

2021-07-22 11:39:31 字數 1442 閱讀 9637

資訊**的今天,根據自己的愛好去訂閱相關的資訊是很有必要的。

今天我們就來演示如何用觀察者模式來實現訂閱訊息的更新推送。

首先我們定義乙個主題(抽象通知者)抽象類:

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...