• 观察者模式-订报纸,语音呼叫系统实例


    <?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();//呼叫系统通知各个观察者,这个动作可以由外界的某件事情来触发,比如到了推送报纸的时间
  • 相关阅读:
    angularJs之http后台访问数据
    angularJ之$filter过滤器
    angularJs之service
    下拉列表select显示ng-options
    angularJs非空校验requied
    angularJs禁用或启用输入框指令ng-disabled="true"
    angularJS支持的事件
    angularJ表单验证
    angularJs之template指令
    angularJs自定义指令.directive==类似自定义标签
  • 原文地址:https://www.cnblogs.com/jiufen/p/5056966.html
Copyright © 2020-2023  润新知