首頁  >  文章  >  後端開發  >  PHP中什麼是觀察者模式?如何運用?

PHP中什麼是觀察者模式?如何運用?

慕斯
慕斯原創
2021-06-23 11:23:021630瀏覽

對於觀察者模式,我們可能不是那麼耳熟聞詳,它是一種事件系統,意味著這個模式允許某個類別觀察另一一個類別的狀態,當被觀察的類別狀態改變的時候,觀察類別可以收到通知並且做出相應的動作;觀察者模式提供了避免組件之間緊密耦合的另一種方法;因此我們就一起來本篇文章討論什麼是觀察者模式吧!

相關推薦:PHP中什麼是工廠模式以及工廠方法模式?

觀察者:

它是一種事件系統,意味著這個模式允許某個類別觀察另一個類別的狀態,當被觀察的類別狀態改變的時候,觀察類別可以收到通知並且做出相應的動作;觀察者模式提供了避免元件之間緊密耦合的另一種方法;

我們還是以程式碼為例,我們新建一個文件,然後定義一個類,然後在類裡面寫入一個成員屬性,他是一個數組用來存放觀察者,緊接著我們在定義一個方法,這個方法是用來存放觀察者和加入觀察者的,當被觀察者做出行為的時候,讓觀察者得到通知,並且做出一定反應,程式碼為例:

<?php
class Man
{
//用来存放观察者
protected $observers = [];
//添加观察者方法
function addObserver($observer)
{
  $this->observers[]=$observer;
}
//花钱方法
function buy()
{
//当被观察者做出这个行为的时候,让观察者得到通并且做出一-定的反应
foreach ($this->observers as $girl) {
  $girl->pome();
}
}
}
class GirlFriend
{
function pome()
{
echo&#39;我只明白一件事,爱一个人,是那么痛苦<br />&#39;;
}
}
//创建对象
$xiaoming = new Man();
$xiaohua =new GirlFriend();
$xiaoli = new GirlFriend();
//添加观察者
$xiaoming->addObserver( $xiaohua); 
$xiaoming->addObserver($xiaoli);
$xiaoming->buy();

運行結果如下:

PHP中什麼是觀察者模式?如何運用?

#有新增觀察者這樣一個方法,那就有刪除觀察者的方法,因此我們還要加入一個刪除觀察者的方法,

function delObserver($observer)
{
//查找对应值在数组中的键
$key = array_search($observer,$this->observers);
//根据键删除值,并且数组重新索引
array_splice($this->observers, $key, 1);
}
}

//刪除

$xiaoming->delObserver( $xiaohua);

程式碼如下:

PHP中什麼是觀察者模式?如何運用?

推薦學習:《PHP影片教學

以上是PHP中什麼是觀察者模式?如何運用?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn