• 设计模式(六)观察者模式


    观察者模式

    1:观察者模式(Observer),当一个对象状态发生变化时,依赖它的对象全部会收到通知,并自动更新。 
    2:场景:一个事件发生后,要执行一连串更新操作。传统的编程方式,就是在事件的代码之后直接加入处理的逻辑。当更新的逻辑增多之后,代码会变得难以维护。这种方式是耦合的,侵入式的,增加新的逻辑需要修改事件的主体代码。 
    3:观察者模式实现了低耦合,非侵入式的通知与更新机制。 
    定义一个事件触发抽象类。

    定义抽象类添加观察者:

    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接口:

    Observer.php
    <?php
    require_once 'Loader.php';
    interface Observer{
        function update();//这里就是在事件发生后要执行的逻辑
    }
    //一个实现了EventGenerator抽象类的类,用于具体定义某个发生的事件

    实现

    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();
  • 相关阅读:
    产生财务计帐周期
    判断指定年份是否为闰年
    判断是否是闰年
    Regex quick reference
    组合外键(FOREIGN KEY)
    多列组合为主键(PRIMARY KEY)
    获取字符串开始的地址(案例)
    获取字符串结尾的电话号码(案例)
    ms sql server line feed
    如何产生连续时间?(案例)
  • 原文地址:https://www.cnblogs.com/wanglijun/p/10928037.html
Copyright © 2020-2023  润新知