您的位置:首页 > 编程语言 > PHP开发

php设计模式之命令模式

2013-11-08 18:40 826 查看
<?php
header("Content-Type:text/html;charset=utf-8");
/**
*
* @php设计模式之命令模式
* @命令模式顾名思义,下达命令,接收命令,执行命令
* @本例主要模拟古时皇帝给下面的人下达命令来解释什么是命令模式
**/

//执行命令
class  Minitary
{
//执行派兵
public function battle()
{
echo '派兵打仗'.PHP_EOL;
}
}
class Kitchen
{
//执行做饭
public function cook()
{
echo '做好吃的';
}
}

/**
*命令统一执行接口
**/

interface Command{ public function execute();}

/**
*
* 兵部需要执行 打仗命令
**/

class BattleCommand implements Command
{
//发兵令牌
protected $_military;
public function __construct(Minitary $minitary)
{
$this->_military=$minitary;
}
public function execute()
{
$this->_military->battle();
}

}

/**
*
* 御膳房需要执行 做饭命令
**/

class CookCommand implements Command
{
//做饭令牌
protected $_kitchen;
public function __construct(Kitchen $kitchen)
{
$this->_kitchen=$kitchen;
}
public function execute()
{
$this->_kitchen->cook();
}
}

/**
*
*接下来,我们看下太监能干什么?他只需要知道是什么命令,去传就可以了。
**/

class Taijian
{
/**
*这是什么命令
*/
protected $_command;
public function __construct(Command $command)
{
$this->_command=$command;
}
public function sendCommand()
{
$this->_command->execute();
}
}
/**
*到此二B皇帝只需要发号施令就可以了
*
**/
class King
{
public function doCommand()
{
//让一个太监给兵部发送派兵打仗的命令.
$tj1=new Taijian(new BattleCommand(new Minitary));
$tj1->sendCommand();

//让一个太监给御善房发送做饭的命令.
$tj2=new Taijian(new CookCommand(new Kitchen));
$tj2->sendCommand();
}
}
$king=new King;
$king->doCommand();
?>
学习QQ群:193990134

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息