zoukankan      html  css  js  c++  java
  • 观察者模式-订报纸,语音呼叫系统实例

    <?php
    /**
     * 观察者模式
     */
    
    /**
     * 专门负责观察的类--主呼叫系统
     * 1、记录要提醒的对象的名字
     * 2、循环调用记录的对象们的一个同名的方法,这个方法具体做什么事情它们自己去决定
     */
    class Paper
    { 
        private $_observers = array();
        public function register($sub)/*录入要提醒的人的名单*/
        { 
            $this->_observers[] = $sub;
        }
        public function trigger()/*统一提醒功能*/
        {  
            if(!empty($this->_observers))
            {
                foreach($this->_observers as $observer)
                {
                    $observer->update();//记录的对象们的一个同名的方法,‘同名’用接口来规范
                }
            }
        }
    }
     
    /**
     * 观察者们,必须要实现的接口
     */
    interface Observerable
    {
        public function update();
    }
     
    class Subscriber1 implements Observerable
    {
        public function update()
        {
            echo '我是1号,主呼叫系统在call我,我该做点什么事情了^_^
    ';
        }
    }
    
    class Subscriber2 implements Observerable
    {
        public function update()
        {
            echo '我是2号,主呼叫系统在call我,我该做点什么事情了^_^
    ';
        }
    }
    
    class Subscriber3 implements Observerable
    {
        public function update()
        {
            echo '我是3号,主呼叫系统在call我,我该做点什么事情了^_^
    ';
        }
    }
    
     
    /*测试*/
    $paper = new Paper();//呼叫系统
    $paper->register(new Subscriber1());//注册观察者
    $paper->register(new Subscriber2());
    $paper->register(new Subscriber3());
    $paper->trigger();//呼叫系统通知各个观察者,这个动作可以由外界的某件事情来触发,比如到了推送报纸的时间
  • 相关阅读:
    正则表达式常用收集
    IIS 部署nodejs
    借助svn进行半自动多台服务器上线部署
    快速开发window服务器程序
    sql server 存储过程解密
    EF 剥坑
    测试常规需要测试的东西
    html5本次存储几种方式
    log4net 写日志配置
    js 获取定位信息
  • 原文地址:https://www.cnblogs.com/jiufen/p/5056966.html
Copyright © 2011-2022 走看看