国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - PHP教程 - PHP 設計模式之觀察者模式介紹

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

2019-12-26 16:38PHP教程網 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(); 



總結 

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

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产a级黄色毛片 | 九色影院 | 国产日韩一区二区三区 | 成人在线不卡 | 国产毛片久久久 | 国产欧美视频一区二区 | 日本一区二区在线视频 | 久久成人av | 国产高清精品一区二区三区 | 久久久精品免费视频 | 欧美综合色 | 中日韩欧美风情视频 | 免费av电影观看 | 中文字幕在线不卡 | 久久免 | 亚洲精品福利 | 久久久久久亚洲一区二区三区蜜臀 | 91精品国产九九九久久久亚洲 | 国产精品爱久久久久久久 | 色九九 | 亚洲一区二区三区精品动漫 | 天堂v视频 | 九九精品视频在线 | 欧美视频精品 | 精品一二区| 国产精品成人av | 国产精品爱久久久久久久 | 国产成人影院 | 色a在线| 国产视频第一页 | 最新电影在线高清免费完整观看视频 | 免费成人在线观看视频 | 午夜精品视频在线观看 | 国产精品毛片久久久久久久 | 成人免费在线电影 | 一区二区三区免费播放 | 在线播放亚洲 | 久久综合久久综合久久 | 日韩中文字幕在线播放 | 精品无码久久久久国产 | av人人看 |