本篇文章为大家展示了怎么在php中应用策略模式,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
待解决的问题:我们需要根据种族的不同,而对玩家进行不同的初始化,最好将这些不同的处理方式封装。
思路:定义初始化的接口,然后制作不同种族的初始化类。
策略模式(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 giveBuilding($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->building[] = new Hatchery();
}
//初始化人口供给
public function giveSupply($player)
{
//人族初始人口供给为10
$player->supply = 10;
}
}
//初始化的控制类
class initialController
{
//构造函数,参数为玩家的数组
public function __construct($playerArray)
{
foreach ($playerArray as $player)
{
switch ($player->race)
{
case 'zerg':
$initialController = new zergInitial();
break;
case '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);
?>
用途总结:策略模式可以将不同情况下的算法封装,根据具体的情况调用。
实现总结:需要一个接口,规定算法规范,使用者(比如初始化来)只要调用对应的算法就可以了。
上述内容就是怎么在php中应用策略模式,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注亿速云行业资讯频道。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。