zoukankan      html  css  js  c++  java
  • 职责链模式

    用途总结:职责链模式可以将一个涉及到多个对象的事件的处理交给对象自己处理,减少关联性。
    
    实现总结:需要一个处理事件的接口,然后让所有的对象实现。
    <?php
    
    //被原子弹攻击的接口
    interface NuclearAttacked
    {
        //处理被原子弹攻击的方法,参数为投放点的x和y坐标
        public function NuclearAttacked($x, $y);
    
    }
    
    //人族的基地,实现被原子弹攻击的接口,其他的内容暂时不考虑
    class CommandCenter implements NuclearAttacked
    {
        //处理被原子弹攻击的方法,参数为投放点的x和y坐标
        public function NuclearAttacked($x, $y)
        {
            //根据离原子弹中心的距离,定义减少的血,如果超出了剩余的血,就炸掉
            echo '爆炸点为'.$x.'-'.$y."人族受伤2点";
        }
    }
    
    //巡洋舰(俗称大和),实现被原子弹攻击的接口,其他的内容暂时不考虑
    class Battlecruiser implements NuclearAttacked
    {
        //处理被原子弹攻击的方法,参数为投放点的x和y坐标
        public function NuclearAttacked($x, $y)
        {
            //根据离原子弹中心的距离,定义减少的血,如果超出了剩余的血,就炸掉
            echo '爆炸点为'.$x.'-'.$y."巡洋舰受伤1点";
        }
    }
    
    //原子弹类
    class Nuclear
    {
        //被原子弹攻击的对象
        public $attackedThings;
        //添加被原子弹攻击的对象
        public function addAttackedThings($thing)
        {
            //添加被原子弹攻击的对象
            $this->attackedThings[] = $thing;
        }
    
        //原子弹爆炸的方法,参数为投放点的x和y坐标
        public function blast($x, $y)
        {
            //把爆炸的事情交给所有涉及的对象,让他们自己处理
            foreach ($this->attackedThings as $thing)
            {
                //把爆炸的事情交给所有涉及的对象,让他们自己处理
                $thing->NuclearAttacked($x, $y);
            }
        }
    }
    
    
    
    //新建一个基地对象
    $CommandCenter = new CommandCenter();
    //新建一个巡洋舰对象
    $Battlecruiser = new Battlecruiser();
    
    //造了一颗原子弹
    $Nuclear2 = new Nuclear();
    //假设投放成功,那个瞬间一个基地对象和一个巡洋舰对象在杀伤范围内
    $Nuclear2->addAttackedThings($CommandCenter);
    $Nuclear2->addAttackedThings($Battlecruiser);
    
    //原子弹爆炸,这样就把这个事件交给那些涉及的对象的处理方法,假设投放点的x和y坐标是2353, 368
    $Nuclear2->blast(2353, 368);
    
    ?>
  • 相关阅读:
    vueJs+webpack单页面应用--vue-router配置
    webstorm IDE添加Plugins----添加vue插件
    WebStorm 11、PhpStorm 10免费激活(不需要注册码)
    webpack react基础配置二 热加载
    webpack react基础配置一
    移动端页面去掉click点击 背景色变化
    css美化checkbox radio样式
    ie11媒体查询以及其他hack
    angularJS ng-grid 配置
    网络7. TCP/IP网络之网络接口层
  • 原文地址:https://www.cnblogs.com/jiufen/p/5045166.html
Copyright © 2011-2022 走看看