PHP設計模式(5)—— 觀察者模式

TimChen666發表於2018-11-30

基本概念

整個觀察者模式,其實做的就是監聽事件處理事件

由此引出兩個角色,一個是觀察者Listener,另一個是事件處理者Handler。


例子


第一步,建立抽象事件類。

它的主要作用是提供兩個方法給具體事件類呼叫。


abstract class EventGenerator
{
	
	// 觀察者陣列
	private $observers = array();


	// 新增觀察者
	function addobserver(Observer $observer)
	{
	  $this->observers[] = $observer;
	}


	// 事件通知函式
	function notify()
	{
	  // 遍歷觀察者,新增事件處理
	  foreach($this->observers as $observer)
	  {
	    $observer->watch();
	  }
	}
}



第二步,建立具體事件類。

它的主要作用是間接呼叫事件通知函式。


class Event extends EventGenerator
{
	function trigger()
	{
	  echo "Event<br/>";
	  $this->notify();
	}
}



第三步,建立觀察者抽象類。

它的作用是給每個觀察者一個監聽事件的watch方法。


// 觀察者介面
interface observer
{
	function watch($event_info = null);
}



第四步,建立具體的觀察者類。

它的主要作用是,進行收到事件通知的後續處理。

// 多個觀察者
class Observer1 implements observer
{
	function watch($event_info = null)
	{
	  echo "邏輯1<br/>"; 
	}
}
class Observer2 implements observer
{
	function watch($event_info = null)
	{
	  echo "邏輯2<br/>"; 
	}
}



第五步,使用


// 例項化具體事件類
$event = new Event;

// 新增觀察者
$event->addObserver(new Observer1);
$event->addObserver(new Observer2);

// 間接呼叫事件通知
$event->trigger();






原文地址

http://larabase.com/collection/5/post/153


參考資料

http://www.cnblogs.com/DeanChopper/p/4830134.html

相關文章