當一個對象狀態發生改變時,依賴它的對象全部會收到通知,並自動更新。
Event:事件
Trigger() 觸發新的事件
abstract EventGenerator 事件產生者
Function addObserver(Observer $observer) 添加事件
Function notify() 通知事件產生了
Interface Observer 觀察者
Function update($event_info=null) 執行一些更新的操作
$event_info 事件的一些信息
<?php
/**
* 觀察者模式
* User: pyzn
* Date: 2016-03-21
* Time: 17:35
*/
/**
* Class EventGenerator
* 觀察者模式的核心,主要是對事件進行約束,保證事件中存在addObserver、notify方法
*/
abstract class EventGenerator
{
private $observers = array();
public function addObserver(Observer $observer)
{
$this->observers[] = $observer;
}
public function notify()
{
foreach ($this->observers as $observer)
{
$observer->update();
}
}
}
/**
* Class Event 具體事件類,這里映射程序中增加的某個事件
* 其繼承自事件產生者基類
*/
class Event extends EventGenerator
{
/**
* 執行一個事件,並進行通知
*/
public function trigger()
{
echo "事件發生<br />";
$this->notify();
}
}
/**
* Interface Observer
* 對事件進行約束,保證事件中有update操作方法
*/
interface Observer
{
function update($event_info = null);
}
class Observer1 implements Observer
{
function update($event_info = null)
{
// TODO: Implement update() method.
echo "邏輯1<br />";
}
}
class Observer2 implements Observer
{
function update($event_info = null)
{
// TODO: Implement update() method.
echo "邏輯2<br />";
}
}
$event = new Event();
$event->addObserver(new Observer1());
$event->addObserver(new Observer2());
$event->trigger();
本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。