老司机91精品网站在线观看_久久69精品久久久久久hb_成人欧美在线观看_免费一级日本c片完整版

首頁>焦點 > 正文

PHP面向對象的設計模式-觀察者模式|環球頭條

2023-04-29 14:22:09    出處:騰訊云


(資料圖片)

一、概述

觀察者模式是一種行為設計模式,它定義了對象之間的一種一對多的依賴關系,當一個對象狀態發生改變時,所有依賴它的對象都將得到通知并自動更新。這種模式也叫做發布-訂閱模式,它能夠解決對象之間的耦合關系。

觀察者模式有三個角色:Subject(主題)、Observer(觀察者)和ConcreteObserver(具體觀察者)。Subject是被觀察的對象,當它的狀態發生改變時,會通知所有觀察它的對象。Observer是觀察者,它定義了接收通知的接口,所有觀察者都實現這個接口。ConcreteObserver是具體的觀察者,它實現了Observer接口,當Subject的狀態發生改變時,它會接收到通知并作出相應的處理。

觀察者模式的優點是可以實現松耦合,即Subject和Observer之間的耦合度很低,它們可以獨立地改變而不會影響到對方。此外,觀察者模式還支持廣播通信,即Subject可以同時通知多個Observer。

二、示例

下面是一個使用觀察者模式的示例。假設有一個天氣主題,它會隨著天氣的變化通知所有的觀察者。觀察者可以是顯示天氣的頁面或者是發送短信的手機應用程序。

定義Subject接口

首先,我們需要定義Subject接口,它定義了注冊、移除和通知觀察者的方法:

interface Subject{    public function registerObserver(Observer $observer);    public function removeObserver(Observer $observer);    public function notifyObservers();}

定義Observer接口

接下來,我們定義Observer接口,它定義了接收通知的方法:

interface Observer{    public function update($temperature, $humidity, $pressure);}

實現具體的Subject

然后,我們實現具體的Subject類,它維護了一個觀察者列表,當它的狀態發生改變時,會通知所有觀察者::

class WeatherData implements Subject{    private $observers;    private $temperature;    private $humidity;    private $pressure;        public function __construct()    {        $this->observers = array();    }        public function registerObserver(Observer $observer)    {        $this->observers[] = $observer;    }        public function removeObserver(Observer $observer)    {        $key = array_search($observer, $this->observers, true);        if ($key !== false) {            unset($this->observers[$key]);        }    }        public function notifyObservers()    {        foreach ($this->observers as $observer) {            $observer->update($this->temperature, $this->humidity, $this->pressure);        }    }        public function measurementsChanged()    {        $this->notifyObservers();    }        public function setMeasurements($temperature, $humidity, $pressure)    {        $this->temperature = $temperature;        $this->humidity = $humidity;        $this->pressure = $pressure;        $this->measurementsChanged();    }}

實現具體的Observer

最后,我們實現具體的Observer類,它實現了Observer接口的update方法,當它接收到通知時,會更新自己的狀態:

class CurrentConditionsDisplay implements Observer{    private $temperature;    private $humidity;    private $pressure;    private $weatherData;        public function __construct(Subject $weatherData)    {        $this->weatherData = $weatherData;        $this->weatherData->registerObserver($this);    }        public function update($temperature, $humidity, $pressure)    {        $this->temperature = $temperature;        $this->humidity = $humidity;        $this->pressure = $pressure;        $this->display();    }        public function display()    {        echo "Current conditions: " . $this->temperature . "F degrees and " . $this->humidity . "% humidity\n";    }}

在這個示例中,WeatherData類是Subject,它維護了一個觀察者列表,并實現了注冊、移除和通知觀察者的方法。CurrentConditionsDisplay類是具體的觀察者,它實現了Observer接口的update方法,當它接收到通知時,會更新自己的狀態并調用display方法顯示當前的天氣信息。

使用觀察者模式的主要步驟如下:

定義Subject接口,其中包含注冊、移除和通知觀察者的方法。定義Observer接口,其中包含接收通知的方法。實現具體的Subject類,維護觀察者列表,并實現注冊、移除和通知觀察者的方法。實現具體的Observer類,實現接收通知的方法并更新自己的狀態。在主程序中,創建具體的Subject和Observer對象,將Observer對象注冊到Subject對象中,當Subject的狀態發生改變時,通知所有注冊的Observer對象。

關鍵詞:

消費
產業
2023中華張姓拜祖大典舉行 4月28日上午,2023中華張姓拜祖大典在中華張姓祖根地河南省濮陽縣揮公陵園如期舉行。2
中璜新材木飾面:添置精致家居裝飾美學 中璜新材木飾面是一家專業的家居裝飾公司,他們的產品旨在為家庭提供精致的家居裝飾美
高效記錄等你來體驗,科大訊飛智能錄音筆值得擁有 打工人的世界里永遠充滿著激烈的競爭,這對于新人來說是極具挑戰的。新人上崗,除了熟
尊守道酒|因尊而守 因道而成——“自己人喝的好醬酒” 因尊而守,因道而成,尊守道酒,尊天而守天道,尊地而守地道,尊人而守人道,天地人和
基金
老司机91精品网站在线观看_久久69精品久久久久久hb_成人欧美在线观看_免费一级日本c片完整版

      久久麻豆一区二区| 欧美性受极品xxxx喷水| 337p亚洲精品色噜噜| 欧美国产日韩亚洲一区| 男男视频亚洲欧美| 久久在线免费观看| 一本色道**综合亚洲精品蜜桃冫| 精品区一区二区| 亚洲成人激情自拍| 久久综合五月天婷婷伊人| 亚洲综合成人网| 欧美mv日韩mv亚洲| 五月综合激情日本mⅴ| av亚洲精华国产精华精华| 亚洲综合精品久久| 久久先锋影音av鲁色资源网| 奇米影视一区二区三区| 国产色爱av资源综合区| 欧美午夜宅男影院| 亚洲视频一区二区在线观看| 国产成人综合自拍| 亚洲精品视频在线看| 精品福利一区二区三区| 日本伊人午夜精品| 国产精品丝袜91| 4438亚洲最大| 午夜精彩视频在线观看不卡| 久久久久久久久久久久久夜| 欧美日韩三级一区| 一区二区三区在线免费| av中文字幕不卡| 久久91精品国产91久久小草| 亚洲视频综合在线| 久久夜色精品一区| 久久国产视频网| 亚洲色图.com| 久久久久久久性| 激情五月激情综合网| 亚洲久本草在线中文字幕| 久久这里都是精品| 国产伦精品一区二区三区视频青涩 | 久99久精品视频免费观看| 亚洲私人黄色宅男| 久久久亚洲午夜电影| 国产一区二区精品在线观看| 亚洲综合一区在线| 日本一二三不卡| 成人网在线播放| 欧美在线视频不卡| 亚洲国产毛片aaaaa无费看| 日本一区二区视频在线| 日韩一区二区高清| 麻豆精品在线观看| 亚洲线精品一区二区三区| 亚洲欧洲日产国码二区| 91视频xxxx| 欧美一区二区三区色| 青青草伊人久久| 一区二区三区免费网站| 最新中文字幕一区二区三区| 91浏览器入口在线观看| 欧美一级专区免费大片| 久久福利资源站| 亚洲丶国产丶欧美一区二区三区| 日韩毛片一二三区| 久久久久久久国产精品影院| 欧美mv和日韩mv的网站| 国产精品白丝jk白祙喷水网站| 色综合天天综合色综合av| 亚洲精品日日夜夜| 国产精品久久久久久久久免费樱桃| 久久久久久久网| av在线不卡观看免费观看| 91麻豆精品国产91久久久久久久久| 奇米精品一区二区三区在线观看一| 亚洲综合色噜噜狠狠| 依依成人精品视频| 国产精品不卡一区| 中文字幕一区二区日韩精品绯色| 久久综合九色综合97婷婷| 久久久综合视频| 99国内精品久久| 精品福利一二区| 99久久婷婷国产综合精品电影| 日韩欧美亚洲一区二区| 国产乱人伦精品一区二区在线观看| 在线观看国产一区二区| 麻豆91精品视频| 在线亚洲+欧美+日本专区| 日本网站在线观看一区二区三区| 亚洲不卡在线观看| 日本三级亚洲精品| 欧美影视一区在线| 韩国三级电影一区二区| 欧美高清www午色夜在线视频| 韩国av一区二区三区四区| 欧美久久久久久久久中文字幕| 极品少妇一区二区| 欧美日本在线看| 国产精品一区在线观看你懂的| 555www色欧美视频| 国产99精品视频| 欧美精品一区二区三区蜜桃 | 国产精品人成在线观看免费| 国产日本一区二区| 亚洲视频在线一区| 亚洲免费观看在线观看| 亚洲一区二区三区中文字幕 | 亚洲天堂av一区| 亚洲色图第一区| 午夜视频一区在线观看| 色综合中文综合网| 欧美国产日韩亚洲一区| 国产精品福利在线播放| 玉米视频成人免费看| 亚洲免费观看高清在线观看| 亚洲一区二区三区美女| 午夜一区二区三区在线观看| 另类成人小视频在线| 欧美精品亚洲二区| 99久久免费精品高清特色大片| 国产片一区二区| 亚洲国产精品t66y| 亚洲综合区在线| 色播五月激情综合网| 国产成人夜色高潮福利影视| 久久亚洲精精品中文字幕早川悠里| 国产午夜精品一区二区| 亚洲精品一二三四区| 色综合一个色综合亚洲| 国产美女精品一区二区三区| www亚洲一区| 国产精品久久久一本精品| 亚洲大片在线观看| 欧美肥妇free| 国产色综合一区| 亚洲综合区在线| 欧美日韩在线播| 91片在线免费观看| 一区二区三区中文字幕| 91福利小视频| jiyouzz国产精品久久| 自拍视频在线观看一区二区| 亚洲精品福利视频网站| 黄一区二区三区| 国产日韩欧美a| 亚洲主播在线播放| 国产一区二区三区最好精华液| 国产亚洲成年网址在线观看| 亚洲精选一二三| 国产资源精品在线观看| 国产欧美日韩三级| 亚洲一区二区三区免费视频| 国产麻豆视频一区二区| 欧美国产亚洲另类动漫| 偷窥少妇高潮呻吟av久久免费| 国产成人亚洲综合a∨婷婷| 国产精品每日更新在线播放网址| 亚洲成人www| 成人免费不卡视频| 亚洲欧美日韩在线| 欧美日韩午夜影院| 日本一区二区免费在线观看视频 | 久久免费看少妇高潮| 亚洲黄色小说网站| 高潮精品一区videoshd| 亚洲人123区| 欧美二区乱c少妇| 中文字幕亚洲一区二区va在线| 免费在线观看一区二区三区| 国产亚洲一二三区| 亚洲aaa精品| 91免费小视频| 日本在线不卡视频一二三区| 久久久av毛片精品| 色妹子一区二区| 久久精品亚洲国产奇米99| 日本亚洲电影天堂| 国产欧美精品一区二区三区四区| 一本一本大道香蕉久在线精品| 2021国产精品久久精品| 日本三级亚洲精品| 国产精品视频一二三| 欧美性极品少妇| 国产精品女同互慰在线看| 国模无码大尺度一区二区三区| 国产精品大尺度| 91精品国产一区二区三区蜜臀 | 国产色产综合色产在线视频| 色成年激情久久综合| 国产精品网站在线观看| 国产真实精品久久二三区| 亚洲欧洲中文日韩久久av乱码| 欧美一级艳片视频免费观看| 亚洲精品免费在线| 97久久超碰国产精品电影| 麻豆一区二区三| 亚洲视频一区二区在线观看| 欧美成人国产一区二区| 色诱视频网站一区|