设计模式||策略模式
“我想去桂林找我的亲亲师父!”
第一步该干什么呢?
“买票!”
“错!你该思考出行方式!”
这里的“出行方式”其实是一个抽象的概念,而把它具体化就是:火车、飞机、自驾、骑行以及徒步等等。
“啊!好难选啊,那来抽签决定吧!”
出行方式,各就各位,预备,起!
//统一出行方式各签的颜色
interface Strategy {
pulic function methodColor();
}
再把每个出行方式具体化:
class Train implements Strategy //接口继承前,别忘记引入接口类哟
{
public function methodColor(){
echo "坐火车";
}
}
class Plain implements Strategy //接口继承前,别忘记引入接口类哟
{
public function methodColor(){
echo "乘飞机";
}
}
(其他几个以此类推)
现在,我们把每个签装进盒子里。
class KK
{
protected $strategy;
public function index (){
$this->strategy->methodColor(); //根据抽到的出行方式,调用统一的方法
}
public function setStrategy($strategy){
$this->strategy=$strategy; //根据抽到的出行方式,设置出行方式
}
}
接下来,重头戏来啦!抽签开始!
//客户端,我就不封类了哈
$qian = "Plain"; //哇,抽中飞机啦
$strategy = new $qian;//php就是这么任性,变量也能直接实例化
$kk = new KK();//我终于进化成人了
$kk->setStrategy($qian);//开奖啦!啦啦啦~
$kk->index();//奖励兑换完毕
作者注:策略模式只偶尔用了两次,写的不好的,还望大神不吝指点,拜谢。