摘要:引言意圖定義對象間的一種一對多的依賴關系,當一個對象的狀態(tài)發(fā)生改變時,所有依賴于它的對象都得到通知并被自動更新。何時使用一個對象目標對象的狀態(tài)發(fā)生改變,所有的依賴對象觀察者對象都將得到通知,進行廣播通知。
引言
意圖:定義對象間的一種一對多的依賴關系,當一個對象的狀態(tài)發(fā)生改變時,所有依賴于它的對象都得到通知并被自動更新。
主要解決:一個對象狀態(tài)改變給其他對象通知的問題,而且要考慮到易用和低耦合,保證高度的協(xié)作。
何時使用:一個對象(目標對象)的狀態(tài)發(fā)生改變,所有的依賴對象(觀察者對象)都將得到通知,進行廣播通知。
使用場景: 1、拍賣場,全部買家都要知曉目前競爭信息 2、報紙,報紙新出一期,要發(fā)放給全部訂閱者
代碼范例observers = new SplObjectStorage(); } 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 getContent(){ return $this->content; } public function breakOutNews($content) { $this->content = $content; $this->notify(); } } //觀察者 class Reader implements SplObserver { private $name; public function __construct($name){ $this->name = $name; } public function update(SplSubject $subject) { echo $this->name ." receive " . $subject->getContent() . PHP_EOL; } } $newspaper = new Newspaper("times"); $a = new Reader("a"); $b = new Reader("b"); $c = new Reader("c"); //添加觀察者/訂閱 $newspaper->attach($a); $newspaper->attach($b); $newspaper->attach($c); //移除觀察者 $newspaper->detach($a); //發(fā)布 $newspaper->breakOutNews("news 23333");
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://www.ezyhdfw.cn/yun/28690.html
摘要:觀察者模式定義設計模式中對的定義一個對象稱為維持一系列依賴于它觀察者的對象,將有關狀態(tài)的任何變更自動通知給它們。如圖模式比較觀察者模式則多了一個類似于話題調度中心的流程,發(fā)布者和訂閱者解耦。 Obeserver(觀察者)模式 定義 《js設計模式》中對Observer的定義:一個對象(稱為subject)維持一系列依賴于它(觀察者)的對象,將有關狀態(tài)的任何變更自動通知給它們。 《設計模...
摘要:關鍵概念理解觀察者設計模式中主要區(qū)分兩個概念觀察者指觀察者對象,也就是消息的訂閱者被觀察者指要觀察的目標對象,也就是消息的發(fā)布者。 原文首發(fā)于微信公眾號:jzman-blog,歡迎關注交流! 最近補一下設計模式相關的知識,關于觀察者設計模式主要從以下幾個方面來學習,具體如下: 什么是觀察者設計模式 關鍵概念理解 通知觀察者的方式 觀察者模式的實現(xiàn) 觀察者模式的優(yōu)缺點 使用場景 下面...
摘要:觀察者模式的使用場景比如你微博關注了一個人,那么這個人發(fā)布的微博就會推送到你這。 Java設計模式之觀察者模式 一直想寫一篇學習觀察者模式的總結沒有契機,今天學習阻塞隊列的原理時候看到在實現(xiàn)生產者消費者的時候用到了通知模式,就是所謂的觀察者模式,正好順便整理一下。 1. 簡介 觀察者模式定義對象間的一種一對多的依賴關系,當一個對象的狀態(tài)發(fā)生改變時,所有依賴于它的對象都得到通知并被自動更...
摘要:概念觀察者模式屬于行為模式,是定義對象間的一種一對多的依賴關系,以便當一個對象的狀態(tài)發(fā)生改變時,所有依賴于它的對象都得到通知并自動刷新。觀察者模式符合接口隔離原則,實現(xiàn)了對象之間的松散耦合。 概念 觀察者模式屬于行為模式,是定義對象間的一種一對多的依賴關系,以便當一個對象的狀態(tài)發(fā)生改變時,所有依賴于它的對象都得到通知并自動刷新。 當一個對象狀態(tài)發(fā)生改變后,會影響到其他幾個對象的改變,這...
摘要:最近在學的設計模式,看到了觀察者模式,在此寫下一點理解問題假如一個小販,他把產品的價格提升了,不同的消費者會對此產生不同的反應。 最近在學php 的設計模式, 看到了觀察者模式,在此寫下一點理解: 問題: 假如一個小販, 他把產品的價格提升了, 不同的消費者會對此產生不同的反應。一般的編程模式無非是獲取提升的價格,然后獲取所有的消費者,再循環(huán)每個消費者, 不同的消費者根據(jù)價格漲幅...
摘要:監(jiān)聽模式又名觀察者模式發(fā)布訂閱模式源監(jiān)聽器模式,模式的核心是設計時要區(qū)分誰是被觀察者,誰是觀察者。 監(jiān)聽模式 又名觀察者模式、發(fā)布/訂閱模式、源-監(jiān)聽器(Source/Listener)模式,模式的核心是:設計時要區(qū)分誰是被觀察者,誰是觀察者。被觀察者至少有三個方法,添加觀察者、刪除觀察者、監(jiān)聽目標變化并通知觀察者;觀察者這至少包含一個方法,當接收到被觀察者的通知時,做出相應的處理(即...
閱讀 1936·2021-11-22 12:09
閱讀 1532·2019-08-30 13:22
閱讀 2167·2019-08-29 17:00
閱讀 2704·2019-08-29 16:28
閱讀 3020·2019-08-26 13:51
閱讀 1253·2019-08-26 13:25
閱讀 3330·2019-08-26 12:14
閱讀 3083·2019-08-26 12:14