這篇文章將為大家詳細講解有關php設計模式中觀察者模式怎么用,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
創(chuàng)新互聯(lián)自2013年創(chuàng)立以來,是專業(yè)互聯(lián)網(wǎng)技術服務公司,擁有項目成都做網(wǎng)站、成都網(wǎng)站制作網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元雨花做網(wǎng)站,已為上家服務,為雨花各地企業(yè)和個人服務,聯(lián)系電話:028-86922220觀察者模式:定義對象間一種一對多的依賴關系,當一個對象的狀態(tài)發(fā)生改變時,所有依賴于它的對象都得到通知并自動更新。
觀察者類:
1.抽象主題角色:主題角色將所有對觀察者對象的引用保存在一個集合中,每個主題可以任意多個觀察者。抽象主題提供了增加和刪除觀察者對象的接口。
2.抽象觀察者角色:為所有的具體觀察者定義一個接口,在觀察的主題發(fā)生改變時更新自己
3.具體主題角色:存儲相關狀態(tài)到具體觀察者對象,當具體主題的內部狀態(tài)發(fā)生改變時,給所有登記過的觀察者發(fā)出通知。具體主題角色通常用一個具體子類實現(xiàn)。
4.具體觀察者角色:存儲一個具體主題對象,存儲相關狀態(tài),實現(xiàn)抽象觀察者角色所要求的更新接口,以使得其自身狀態(tài)和主題的狀態(tài)保持一致
作用:
1. 觀察者模式的耦合度較小
2.支持廣播通信
復制代碼 代碼如下:
<?php
//抽象主題
interface Subject{
public function attach($observer);
public function detach($observer);
public function notifyObservers();
}
//具體主題
class ConcreateSubject implements Subject{
private $_observers;
public function __construct(){
$this->_observers = array();
}
public function attach($observer){
return array_push($this->_observers,$observer);
}
public function detach($observer){
$index = array_search($observer,$this->_observers);
if($index === false || !array_key_exists($index,$this->_observers)){
return false;
}
unset($this->_observer[$index]);
return true;
}
public function notifyObservers(){
if(!is_array($this->_observers)){
return false;
}
foreach($this->_observers as $observer){
$observer->update();
}
return true;
}
}
//抽象觀察者
interface Observer{
public function update();
}
//具體觀察者
class ConcreteObserver implement Observer{
private $_name;
public function __construct($name){
$this->_name = $name;
}
public function update(){
echo 'Observer',$this->_name.'has notified<br/>';
}
}
//客戶端
class Client{
public static function main(){
$subject = new ConcreteSubject();
//新增第一個觀察者
$observer1 = new ConcreteObserver('Martin');
$subject->attach($observer1);
//通知
$subject->notifyObservers();
//新增第二個觀察者
$observer2 = new ConcreteObserver('jaky');
$subject->attach($observer2);
//通知
$subject->notifyObservers();
//刪除觀察者1
$subject->deatch($observer1);
//通知
$subject->notifyObservers();
}
}
Client::main();
?>
關于“php設計模式中觀察者模式怎么用”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
分享名稱:php設計模式中觀察者模式怎么用-創(chuàng)新互聯(lián)
文章位置:http://m.newbst.com/article12/hcpdc.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供標簽優(yōu)化、靜態(tài)網(wǎng)站、網(wǎng)站排名、虛擬主機、外貿(mào)建站、網(wǎng)站設計公司
聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內容