天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

PHP 設計模式之觀察者模式介紹

介紹
觀察者模式定義對象的一對多依賴,這樣一來,當一個對象改變狀態時,它的所有依賴者都會收到通知并自動更新!
設計原則
在觀察者模式中,會改變的是主題的狀態以及觀察者的數目。用這個模式,你可以改變依賴于主題狀態的對象,卻不必改變主題。――找出程序中會變化的方面,然后將其和固定不變的方面相分離!
主題和觀察者都使用接口:觀察者利用主題的接口向主題注冊,而主題利用觀察者接口通知觀察者。這樣可以讓兩者之間運作正常,又同時具有松耦合的優點! ――針對接口編程,不針對實現編程!
。
觀察者模式利用“組合”將許多觀察者組合進主題中。對象(觀察者――主題)之間的這種關系不是通過繼承產生的,而是在運行時利用組合的方式產生的。 ――多用組合,少用繼承!
代碼
復制代碼 代碼如下:
<?php
/**
* 觀察者模式
* @author: Mac
* @date: 2012/02/22
*/
class Paper{ /* 主題 */
private $_observers = array();
public function register($sub){ /* 注冊觀察者 */
$this->_observers[] = $sub;
}
public function trigger(){ /* 外部統一訪問 */
if(!empty($this->_observers)){
foreach($this->_observers as $observer){
$observer->update();
}
}
}
}
/**
* 觀察者要實現的接口
*/
interface Observerable{
public function update();
}
class Subscriber implements Observerable{
public function update(){
echo "Callback/n";
}
}
//下面是測試代碼
?
/* 測試 */
$paper = new Paper();
$paper->register(new Subscriber());
//$paper->register(new Subscriber1());
//$paper->register(new Subscriber2());
$paper->trigger();


總結

當新對象要填入的時候,只需要在主題(又叫可觀察者)中進行注冊(注冊方式很多,你也可以在構造的時候,或者框架訪問的接口中進行注冊),然后實現代碼直接在新對象的接口中進行。這降低了主題對象和觀察者對象的耦合度。

好的設計模式不會直接進入你的代碼中,而是進入你的大腦中。

php技術PHP 設計模式之觀察者模式介紹,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 色狠狠一区二区 | 国产亚洲精品A久久777777 | 亚洲精品久久久一区 | 美女张开腿让我了一夜 | 男人插曲女人身体视频 | 久久精品视频15人人爱在线直播 | 亚洲欧美一区二区久久 | 在线中文高清资源免费观看 | 中文天堂www资源 | 日本精品卡一卡2卡3卡四卡三卡 | 俄罗斯极品hd | 久久精品亚洲精品国产欧美 | 久久青青草原综合伊人 | 日韩中文字幕欧美在线视频 | 啊灬啊灬啊灬快灬深高潮啦 | 在线观看成年人免费视频 | 免费看黄的片多多APP下载 | 野花视频在线观看免费 | 国产精品俺来也在线观看 | 国语自产一区视频 | 欧美色妞AV重囗味视频 | 看免费人成va视频全 | 色播播影院 | 影音先锋 av天堂 | 女人久久WWW免费人成看片 | 国产精品人妻午夜福利 | 亚洲AV蜜桃永久无码精品无码网 | bl被教练啪到哭H玉势 | 四虎亚洲中文字幕永久在线 | 亚洲免费三级电影 | 贤妻良母电影日本 | 在线观看精品视频看看播放 | 国产精品一区二区制服丝袜 | 激情内射亚洲一区二区三区爱妻 | 含羞草在线 | 免费在线亚洲视频 | 日本高清不卡码无码v亚洲 日本福利片午夜免费观着 日本粉嫩学生毛绒绒 | 99久久e免费热视频百度 | 夫妻主vk| 快穿之H啪肉 | 国产欧美一区二区三区视频 |