登录  /  注册
首页 > php教程 > PHP开发 > 正文

星际争霸之php职责链模式

php中文网
发布: 2016-06-07 17:23:10
原创
1055人浏览过

星际的兵种属性随着对平衡性的调节,会进行修改。如果这样的话,我们就要考虑减少一个事件和具体处理的关联性。

比如一颗*投下的瞬间,在杀伤范围内的部队或者建筑都会减少血,但是随着距离中心点的远近,受损程度是不同的,而且不同的兵种和建筑受损情况是不同的。

待解决的问题:*投下的瞬间,将杀伤的处理分别交给杀伤范围内的部队或者建筑自己的方法处理。

思路:建立一个接口,让所有的部队或者建筑实现。

职责链模式(Chain of Responsibility)示例:

<?php

//被*攻击的接口

interface NuclearAttacked {

    //处理被*攻击的方法,参数为投放点的x和y坐标

  public function NuclearAttacked($x, $y);

}

//人族的基地,实现被*攻击的接口,其他的内容暂时不考虑

class CommandCenter implements NuclearAttacked {

    //处理被*攻击的方法,参数为投放点的x和y坐标

  public function NuclearAttacked($x, $y)

  {

    //根据离*中心的距离,定义减少的血,如果超出了剩余的血,就炸掉

  }

}

//巡洋舰(俗称大和),实现被*攻击的接口,其他的内容暂时不考虑

class Battlecruiser implements NuclearAttacked {

    //处理被*攻击的方法,参数为投放点的x和y坐标

  public function NuclearAttacked($x, $y)

  {

    //根据离*中心的距离,定义减少的血,如果超出了剩余的血,就炸掉

  }

}

//*类

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);

?>
登录后复制

用途总结:职责链模式可以将一个涉及到多个对象的事件的处理交给对象自己处理,减少关联性。

实现总结:需要一个处理事件的接口,然后让所有的对象实现。(本文来自jymoz.com)

智能AI问答
PHP中文网智能助手能迅速回答你的编程问题,提供实时的代码和解决方案,帮助你解决各种难题。不仅如此,它还能提供编程资源和学习指导,帮助你快速提升编程技能。无论你是初学者还是专业人士,AI智能助手都能成为你的可靠助手,助力你在编程领域取得更大的成就。
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
关于CSS思维导图的课件在哪? 课件
凡人来自于2024-04-16 10:10:18
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2024 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号