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();//呼叫系统通知各个观察者,这个动作可以由外界的某件事情来触发,比如到了推送报纸的时间
  • 相关阅读:
    Sencha Touch 框架快速入门系列
    dotTrace 使用说明
    CQRS架构中同步服务的一种实现方式
    C#中循环结构的效率问题
    面向领域驱动架构的查询实现方式
    最佳 jQuery
    DWZ&MVC的探索系列——Demo演示效果
    在Windows Azure中实现和调试一个WCF服务(上)
    现代软件工程开发体验:结对编程
    结对编程是什么?
  • 原文地址:https://www.cnblogs.com/jiufen/p/5056966.html
Copyright © 2011-2022 走看看