本文实例讲述了php设计模式之策略模式。分享给大家供大家参考,具体如下:
星际开地图对战,等5秒钟进入地图后,每个玩家都会拥有一个基地,几个农民等,还会有初始的人口供给。但这些是根据种族的不同而不同。
待解决的问题:我们需要根据种族的不同,而对玩家进行不同的初始化,最好将这些不同的处理方式封装。
思路:定义初始化的接口,然后制作不同种族的初始化类。
策略模式(strategy)示例:
为了使代码不至于过长,一部分类的定义不在此写出,如果要调试,请用字符串等方式替代new。
<?php //玩家的类 class player { //所属种族 public $race; //部队 public $army; //建筑 public $building; //人口供给 public $supply; //构造函数,设定所属种族 public function __construct($race) { $this->race = $race; } } //初始化的接口 interface initialplayer { //制造初始化的部队 public function givearmy($player); //制造初始化的建筑 public function g有关创新的作文ivebuilding($player); //初始化人口供给 public function givesupply($player); } //虫族的初始化算法 class zerginitial implements initialplayer { //制造初始化的部队 public function givearmy($player) { //一个overlord $player->army[] = new overlord(); //四个虫族农民 春风尔来 for($i=0; $i<4;$i++) { $player->army[] = new drone(); } } //制造初始化的建筑 public function givebuilding($player) { //一个基地 $player->building[] = new hatchery(); } //初始化人口供给 public function givesupply($player) { //虫族初始人口古代人物故事供给为9 $player->supply = 9; } } //人族的初始化算法 class terraninitial implements initialplayer { //制造初始化的部队 public function givearmy($player) { //四个人族农民 for($i=0; $i<4;$i++) { $player->army[] = new svc(); } } //制造初始化的建筑 public function givebuilding($player) { //一个基地 $player-&g中秋 国庆祝福语t;building[] = new hatchery(); } //初始化人口供给 public function givesupply($player) { //人族初始人口供给为10 $player->supply = 10; } } //初始化的控制类 class initialcontroller { //构造函数,参数为玩家的数组 public function __construct($playerarray) { foreach ($playerarray as $player) { switch ($player->race) { ca 'zerg': $initialcontroller = new zerginitial(); break; ca 'terran': $initialcontroller = new terraninitial(); break; } $initialcontroller->givearmy($player); $initialcontroller->givebuilding($player); $initialcontroller->givesupply($player); } } } //假设两个虫族,一个人族 $playerarray = array( new player('zerg')如何让, new player('zerg'), new player('terran'), ); //进行初始化工作 $initialcontroller = new initialcontroller($playerarray);?>
用途总结:策略模式可以将不同情况下的算法封装,根据具体的情况调用。
实现总结:需要一个接口,规定算法规范,使用者(比如初始化来)只要调用对应的算法就可以了。
本文发布于:2023-04-08 15:02:25,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/f29d4c2911de86ca4e7ef4923d9bd3e0.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:php设计模式之策略模式实例分析【星际争霸游戏案例】.doc
本文 PDF 下载地址:php设计模式之策略模式实例分析【星际争霸游戏案例】.pdf
留言与评论(共有 0 条评论) |