PHP設計模式 觀察者模式(Observer)


定義

當一個對象狀態發生改變時,依賴它的對象全部會收到通知,並自動更新。

模式要點

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();

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com