南强小屋 Design By 杰米
本文实例讲述了php设计模式之状态模式。分享给大家供大家参考,具体如下:
星际的一些兵种会有不止一种状态,比如坦克可以架起来,机枪兵可以打兴奋剂,甚至还有一些被动的,比如被虫族女王喷洒绿色液体后,敌人的行动变慢。
如果按照一般的思路,每次我们对一个小兵进行操作的时候,比如一辆坦克,我们都要用if判断他的状态,这样代码中会有很多的if,else或者swith。
不过我们可以发现,我们需要的是他在某个状态下的行为,如果把这些行为按照状态封装起来,就可以减少大量的判断。
待解决的问题:封装坦克的状态,让状态自己去控制行为。
思路:把状态作为属性,兵种类本身只控制状态的变化,具体的行为由状态类定义。
状态(State)模式示例:
<"普通状态"; } } //坦克架起来的状态 class TankState_Siege implements TankState { //坦克的攻击方法 public function attack() { //这里简单的输出当前状态 echo "架起来了"; } } //坦克类 class Tank { //状态 public $state; //坦克的攻击方法 public function __construct() { //新造出来的坦克当然是普通状态 $this->state = new TankState_Tank(); } //设置状态的方法,假设参数为玩家点击的键盘 public function setState($key) { //如果按了s if($key = 's') { $this->state = new TankState_Siege(); } //如果按了t elseif($key = 't') { $this->state = new TankState_Tank(); } } //坦克的攻击方法 public function attack() { //由当前状态自己来处理攻击 $this->state->attack(); } } //新造一辆坦克 $tank = new Tank(); //假设正好有个敌人路过,坦克就以普通模式攻击了 $tank->attack(); //架起坦克 $tank->setState('s'); //坦克再次攻击,这次是架起模式 $tank->attack(); "_blank" href="//www.jb51.net/Special/43.htm">php面向对象程序设计入门教程》、《PHP数组(Array)操作技巧大全》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》希望本文所述对大家PHP程序设计有所帮助。
南强小屋 Design By 杰米
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
南强小屋 Design By 杰米
暂无php设计模式之状态模式实例分析【星际争霸游戏案例】的评论...
P70系列延期,华为新旗舰将在下月发布
3月20日消息,近期博主@数码闲聊站 透露,原定三月份发布的华为新旗舰P70系列延期发布,预计4月份上市。
而博主@定焦数码 爆料,华为的P70系列在定位上已经超过了Mate60,成为了重要的旗舰系列之一。它肩负着重返影像领域顶尖的使命。那么这次P70会带来哪些令人惊艳的创新呢?
根据目前爆料的消息来看,华为P70系列将推出三个版本,其中P70和P70 Pro采用了三角形的摄像头模组设计,而P70 Art则采用了与上一代P60 Art相似的不规则形状设计。这样的外观是否好看见仁见智,但辨识度绝对拉满。