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);
}
触发则会发生改变,触发改变通知的逻辑
相关文章
相关标签/搜索