个人理解,命令链模式就是,给所有相关程序发送一条命令,然后处理结果
比如说你要找苍老师的种子,于是你向baidu、google、yahoo发送你的关键字
不管你用什么搜索引擎,你的目的只有一个,就是找种子那个响应
<?php
header("Content-type: text/html; charset=utf-8");
/*****************************************
* 你要结婚了,但是缺钱需要借2W,于是向你想到了你的前女友们
* 你就给他们打电话(发出命令),你的前女友们会给你作出响应
* 当你凑够2W的时候就可以结婚了,就没必要再借钱了(命令停止)
*****************************************/
//女友接口
interface Girlfriend{
function giveMoney($howMuch);
}
//这是你
class You{
//女友列表,女友是自己的所以要private,但也保不齐以后会是public (-__-)y--~
private $girlFriendList = array();
//你丫一穷光蛋,一分钱没有(是怎么泡到妞的)
private $haveMoney = 0;
//将你的前女友们加入列表
function callGirlfriends($myGirlfriend){
$this->girlFriendList[] = $myGirlfriend;
}
//借钱方法
function borrowMoney($money){
//翻开你手机通讯录,像他们挨个借钱
foreach($this->girlFriendList as $girlfriend){
$this->haveMoney += $girlfriend->giveMoney($money);
//当你攒够钱的时候就放下电话,break了
if($this->haveMoney >= 20000){
echo "哥有钱结婚了";
break;
}
}
}
}
//现任女友,就是你未来的老婆给你5000
class CurrentGrilfriend implements Girlfriend{
function giveMoney($howMuch){
echo "I have 5000";
return 5000;
}
}
//你的前任是个汉子性格的女孩
class PrevGrilfriend implements Girlfriend{
function giveMoney($howMuch){
//她说。。。
echo "Get Out!";
//但依然借给了你7000
return 7000;
}
}
//你的前前任是个富二代,因为性别的原因分开了
//但他依然爱你,希望用这么多钱能打动你
class PrevPrevGrilfriend implements Girlfriend{
function giveMoney($howMuch){
echo "Do You Love Anymore";
return 5000000;
}
}
//于是,你就不需要问你的初恋女友借钱了
class FirstGrilfriend implements Girlfriend{
function giveMoney($howMuch){
echo "Ok";
return 5000;
}
}
//这是你
$you = new You;
//将你的前女友们加入到借钱名单中
$you->callGirlfriends(new CurrentGrilfriend);
$you->callGirlfriends(new PrevGrilfriend);
$you->callGirlfriends(new PrevPrevGrilfriend);
$you->callGirlfriends(new FirstGrilfriend);
//借钱
$you->borrowMoney(20000);