設計模式(六)觀察者模式

觀察者模式

1:觀察者模式(Observer),當一個對象狀態發生變化時,依賴它的對象所有會收到通知,並自動更新。 
2:場景:一個事件發生後,要執行一連串更新操做。傳統的編程方式,就是在事件的代碼以後直接加入處理的邏輯。當更新的邏輯增多以後,代碼會變得難以維護。這種方式是耦合的,侵入式的,增長新的邏輯須要修改事件的主體代碼。 
3:觀察者模式實現了低耦合,非侵入式的通知與更新機制。 
定義一個事件觸發抽象類。php

定義抽象類添加觀察者:編程

EventGenerator.php
<?php
require_once 'Loader.php';
abstract class EventGenerator{
    private $observers = array();
function addObserver(Observer $observer){ $
this->observers[]=$observer; } function notify()
{
foreach ($this->observers as $observer){ $observer->update(); } } }

定義一個觀察者接口interface接口:ui

Observer.php
<?php
require_once 'Loader.php';
interface Observer{
    function update();//這裏就是在事件發生後要執行的邏輯
}
//一個實現了EventGenerator抽象類的類,用於具體定義某個發生的事件

實現this

require 'Loader.php';
class Event extends EventGenerator{
    function triger(){
        echo "Event<br>";
    }
}
class Observer1 implements Observer{
    function update(){
        echo "邏輯1<br>";
    }
}
class Observer2 implements Observer{
    function update(){
        echo "邏輯2<br>";
    }
}
$event = new Event();
$event->addObserver(new Observer1());
$event->addObserver(new Observer2());
$event->triger();
$event->notify();
相關文章
相關標籤/搜索