gpt4 book ai didi

php设计模式之职责链模式实例分析【星际争霸游戏案例】

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 25 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章php设计模式之职责链模式实例分析【星际争霸游戏案例】由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

本文实例讲述了php设计模式之职责链模式。分享给大家供大家参考,具体如下:

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

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

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

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

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
<?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);
?>

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

实现总结:需要一个处理事件的接口,然后让所有的对象实现.

希望本文所述对大家PHP程序设计有所帮助.

原文链接:https://www.cnblogs.com/davidhhuan/p/4248202.html 。

最后此篇关于php设计模式之职责链模式实例分析【星际争霸游戏案例】的文章就讲到这里了,如果你想了解更多关于php设计模式之职责链模式实例分析【星际争霸游戏案例】的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com