设计模式||策略模式

2022-01-11  本文已影响0人  hdormy

“我想去桂林找我的亲亲师父!”

第一步该干什么呢?

“买票!”

“错!你该思考出行方式!”

这里的“出行方式”其实是一个抽象的概念,而把它具体化就是:火车、飞机、自驾、骑行以及徒步等等。

“啊!好难选啊,那来抽签决定吧!”

出行方式,各就各位,预备,起!


//统一出行方式各签的颜色

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();//奖励兑换完毕

作者注:策略模式只偶尔用了两次,写的不好的,还望大神不吝指点,拜谢。
上一篇下一篇

猜你喜欢

热点阅读