个人理解,策略模式就是对待同一个事件,所有不同的方案
你丢了自行车,如果你是中国人,你基本就告别自行车了,
如果你是外国人,车子很快就能找到,而且还有有关部门的人给你赔礼道歉
同一件事对待不同人的不同表现着就是一种策略
<?php
/********************************
* 你叫小明,你从小就立志要去解救生活在水深火热中的米国人
* 但是你发现,到了米国之后什么都不一样了,
* 他们说的是英语,吃饭用的是叉子,有他们的医疗,法律,教育制度等
* 这一整套就是一个策略
*********************************/
interface Country{
function newAroundHere($obj);
}
//这是你
class You{
private $name = "XiaoMing";
public $language = "";
public $dinnerware = "";
//你会说话
function say($country){
echo "My name is $this->name and I Speaking $this->language in $country, with a $this->dinnerware to eat";
}
}
class CHN implements Country{
public $language = "Chinese"; //我们在中国说的是中文
public $dinnerware = "Chopsticks"; //餐具是筷子
//俗话说 When in Rome do as the Rome`s Do
//到了这里就要把我们的风俗习惯给你加载一遍
function newAroundHere($obj){
foreach ($obj as $key => $value) {
$obj->$key = $this->$key;
}
return $obj;
}
}
//但是你拿到了绿卡,远赴重洋要完成你的使命
class USA implements Country{
public $language = "English";
public $dinnerware = "Fork";
//但是首先你要适应这里
function newAroundHere($obj){
foreach ($obj as $key => $value) {
$obj->$key = $this->$key;
}
return $obj;
}
}
$you = new You();
$chn = new CHN();
$chn->newAroundHere($you);
$you->say("China");
echo "<br/>===============================================================================================<br/>";
$usa = new USA();
$usa->newAroundHere($you);
$you->say("American");