xml地图|网站地图|网站标签 [设为首页] [加入收藏]

您的位置:亚洲必赢 > 计算机尝试 > php观察者模式应用场景实例详解,cocos之观察者模

php观察者模式应用场景实例详解,cocos之观察者模

发布时间:2019-09-25 21:20编辑:计算机尝试浏览(164)

     代码如下

    观看者情势:概念对象间一种一对多的依附关系,当二个指标的境况发生转移时,全部正视于它的靶子都得到照管并自动更新。
    观望者类: 1.抽象大旨角色:大旨剧中人物将富有对观望者对象的援引保存在一个集合中,每种主题能够随性所欲多少个观望者。抽象大旨提供了充实和删除观望者对象的接口。
    2.抽象观看者角色:为具有的具体观看者定义二个接口,在察看的主旨发生转移时更新自身
    3.具体核心剧中人物:存款和储蓄相关处境到现实观看者对象,当实际大旨的个中景色发生更换时,给持有登记过的观望者发出通知。具体宗旨剧中人物一般用一个现实子类完结。
    4.切实可行观看者角色:存款和储蓄一个切实可行大旨对象,存储相关境况,达成抽象观望者角色所须求的翻新接口,以使得其本身状态和主旨的情景保持一致
    作用: 1. 观望者形式的耦合度十分的小
    2.支撑广播通讯

    观望地点:

    <?php

    复制代码 代码如下:

    图片 1

    /**

    <?php
    //抽象核心
    interface Subject{
         public function attach($observer);
         public function detach($observer);
         public function notifyObservers();
    }
    //具体宗旨
    class ConcreateSubject implements Subject{
         private $_observers;
         public function __construct(){
              $this->_observers = array();
         }

    概念宏常量地点:

     * 观望者情势选择场景实例

         public function attach($observer){
              return array_push($this->_observers,$observer);
         }

    图片 2

     *

         public function detach($observer){
              $index = array_search($observer,$this->_observers);
              if($index === false || !array_key_exists($index,$this->_observers)){
                   return false;
              }
              unset($this->_observer[$index]);
              return true;
         }

    增加观看者回调函数地点:

    php观察者模式应用场景实例详解,cocos之观察者模式应用实例。 * 豁免权利评释:本文只是以哈票网举个例子,示例中从不提到哈票网任何事情代码,全部原创,如有雷同,纯属巧合。

         public function notifyObservers(){
              if(!is_array($this->_observers)){
                   return false;
              }
              foreach($this->_observers as $observer){
                   $observer->update();
              }
              return true;
         }
    }

    图片 3

     *

    //抽象观望者
    interface Observer{
         public function update();
    }
    //具体观看者
    class ConcreteObserver implement Observer{
         private $_name;
         public function __construct($name){
              $this->_name = $name;
         }

    回调函数完成地点:

     * 场景描述:

         public function update(){
              echo 'Observer',$this->_name.'has notified<br/>';
         }
    }

    图片 4

     * 哈票以购票为基本职业(此形式不限于该事情),但围绕买票会产生差别的其余逻辑,如:

    //客户端
    class Client{
         public static function main(){
                $subject = new ConcreteSubject();
                //新扩大第一个观看者
                $observer1 = new ConcreteObserver('Martin');
                $subject->attach($observer1);
                //通知
                $subject->notifyObservers();

     * 1、买票后记录文本日志

                //新扩展第二个观看者
                $observer2 = new ConcreteObserver('jaky');
                $subject->attach($observer2);
                //通知
                $subject->notifyObservers();

     * 2、买票后记录数据库日志

                //删除观望者1
                $subject->deatch($observer1);
                //通知
                $subject->notifyObservers();
         }
    }

     * 3、订票后发送短信

    Client::main();
    ?>

     * 4、买票送抵扣卷、兑换卷、积分

    您或者感兴趣的篇章:

    • PHP设计情势之观看者格局(Observer)详细介绍和代码实例
    • php设计方式Observer(阅览者情势)
    • PHP 设计方式之观看者情势介绍
    • 学习php设计情势php完成观望者方式(Observer)
    • PHP设计情势之观看者格局实例
    • PHP设计情势之适配器形式原理与用法分析
    • PHP设计情势之原型设计模式原理与用法分析
    • PHP设计方式之工厂方法设计格局实例剖判
    • PHP设计格局之情形方式定义与用法详解
    • PHP设计格局之观望者情势定义与用法示例

     * 5、别的每一种活动等

     *

     * 守旧建设方案:

     * 在领票逻辑等类内部扩张有关代码,完成各类逻辑。

     *

     * 存在难题:

     * 1、一旦某些业务逻辑爆发转移,如购票业务中加进其余工作逻辑,须求修改购票基本文件、以致买票流程。

     * 2、星罗棋布后,文件冗长,导致后续维护困难。

     *

     * 存在难点由来根本是前后相继的"紧凑耦合",使用观察情势将近些日子的事务逻辑优化成"松耦合",到达易维护、易修改的指标,

     * 同一时候也合乎面向接口编制程序的构思。

     *

     * 观望者模式规范完结格局:

     * 1、定义2个接口:观看者(公告)接口、被观察者(大旨)接口

     * 2、定义2个类,观望者对象实现观察者接口、主题类达成被观者接口

     * 3、宗旨类注册自身必要布告的观望者

     * 4、核心类有个别业务逻辑发生时通报观看者对象,每种观望者施行本人的业务逻辑。

     *

     * 示例:如以下代码

     *

     */

     date_default_timezone_set('PRC');//设置中华夏族民共和国时区

    #===================定义观看者、被观看者接口============

    本文由亚洲必赢发布于计算机尝试,转载请注明出处:php观察者模式应用场景实例详解,cocos之观察者模

    关键词: cocos2d-x