本文实例讲述了php设计模式之职责链模式。分享给大家供大家参考,具体如下:
星际的兵种属性随着对平衡性孤芳不自赏结局的江苏信息职业技术学校调节,会进行修改。如果这样的话,我们就要考虑减少一个事件和具体处理的关联性。
比如一颗原子弹投下的瞬间,在杀伤范围内的部队或者建筑都会减少血,但是随着距离中心点的远近,受损程度是不同的,而且不同的兵种和建筑受损情况是不同的。
待解决的问题:原子弹投下的瞬间,将杀伤的处理分别交给杀伤范围内的部队或者建筑自己的方法处理。
思路:建立一个接口,让所有的部队或者建筑实现。
职责链模式(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 battlecruir implements nuclearattacked { //处理被原子弹攻击的方法,参数为投放点的x和y坐标 public function nuclearattacked($x, $y) { //根据离原子弹中心的距离,定义减少的血,如果超出了剩余的血,就炸掉 } } //原子弹类 class nuclear { //被原子弹攻击的对象 public $attackedthings; //添加被原子弹攻击的对象 public fucow发音nction addattackedthings($thing) { //添加被原子弹攻击的对象 $this->attackedthings[] = $thing; } //原子弹爆炸的方法,参数为投放点的x和y坐标 public function blast($x, $y) { //把爆炸的事情交给所有涉及的对象,让他们自己处理 foreach ($this->attackedthings as $thing) { //把爆炸的事情交给所有涉及的对象,让他们自己处理 $thin城市化的表现g->nuclearattacked($x, $y); } } } //新建一个基地对象 $commandcenter = new commandcenter(); //新建一个巡洋舰对象 $battlecruir = new battlecruir(); //造了一颗原子弹 $nuclear2 = new nuclear(); //假设投放成功,那个瞬间一个基地对象和一个巡洋舰对象在杀伤范围内 $nuclear2->addattackedthings($commandcenter); $nuclear2->addattackedthings($battlecrui笔记本电脑什么牌子好用r); //原子弹爆炸,这样就把这个事件交给那些涉及的对象的处理方法,假设投放点的x和y坐标是2353, 368 $nuclear2->blast(2353, 368);?>
用途总结:职责链模式可以将一个涉及到多个对象的事件的处理交给对象自己处理,减少关联性。
实现总结:需要一个处理事件的接口,然后让所有的对象实现。
本文发布于:2023-04-08 16:50:04,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/2066ab11b4cd4cf65d45c2a0c88ec3f0.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:php设计模式之职责链模式实例分析【星际争霸游戏案例】.doc
本文 PDF 下载地址:php设计模式之职责链模式实例分析【星际争霸游戏案例】.pdf
留言与评论(共有 0 条评论) |