PHP設計模式之觀察者模式

觀察者模式: 定義對象間的一種一對多的依賴關係,當一個對象的狀態發生改變時,全部依賴於它的對象都獲得通知並被自動更新 。php

在觀察者模式中,會改變的是主題的狀態以及觀察者的數目。用這個模式,你能夠改變依賴於主題狀態的對象,卻沒必要改變主題。——找出程序中會變化的方面,而後將其和固定不變的方面相分離!編程

 主題和觀察者都使用接口:觀察者利用主題的接口向主題註冊,而主題利用觀察者接口通知觀察者。這樣能夠讓二者之間運做正常,又同時具備鬆耦合的優勢! ——針對接口編程,不針對實現編程!this

 觀察者模式利用「組合」將許多觀察者組合進主題中。對象(觀察者——主題)之間的這種關係不是經過繼承產生的,而是在運行時利用組合的方式產生的。 ——多用組合,少用繼承!code

看代碼:server

觀察者
<?php
abstract class EventGenerator {
    private $observers = array();

    function addObserver(Observer $observer)
    {
        $this->observers[] = $observer;
    }

    function notify()
    {
        foreach($this->observers as $observer)
        {
            $observer->update();
        }
    }

} 
發生者
interface Observer
{
    function update($event_info = null);
}
觸發則會發生改變,觸發改變通知的邏輯
相關文章
相關標籤/搜索