php策略体系
原创例如:一个电商首页,可以根据登陆用户的性别不同显示不同的内容,比如广告和商品类别。
传统方法: 在程序内部使用多个if,else进行判断,这样很难维护,比如我想要再加入一个人妖用户!那么我就要在程序中再加入else if判断,这样写出来的程序看起来很乱,而且不易维护。
策略模式: 实现的思想是这样的,创建一个接口,对于每个类别的用户创建一个类,分别去实现接口中的方法,在首页进行判断实例化哪个类。
interface UserStrategy
{
//显示广告的方法
public function showAd();
//显示类别的方法
public function showCategory();
}
//实现接口中的方法
class MaleUserStrategy implements UserStrategy
{
//男性用户登录后会显示iphone6s的广告
public function showAd()
{
echo Iphone6s ;
}
//会显示电子产品类别
public function showCategory()
{
echo 电子产品啊 ;
}
}
class FemaleUserStrategy implements UserStrategy
{
public function showAd()
{
echo 2016女装 ;
}
public function showCategory()
{
echo 女装 ;
}
}
class Strategy
{
//定义一个变量来存储策略
protected $_strategy ;
//定义展示广告和类别的方法
public function index()
{
echo Ad: ;
echo $this ->_strategy->showAd();
echo <br/> ;
echo Category: ;
echo $this ->_strategy->showCategory();
}
//创建不同的策略
public function setStrategy( $strategy )
{
$this ->_strategy = $strategy ;
}
}
//实例化对象
$strategy = new Strategy();
//如果$_GET[female]存在的话就显示女性用户的广告和类别--如果需要添加其它策略的时候只需要在这里加入判断条件就可以了,当然了还需要创建相应策略的类并且一定要去继承接口
if (isset( $_GET [ female ]))
{
$people = new FemaleUserStrategy();
}
else
{
$people = new MaleUserStrategy();
}
//把对象传入到策略类里
$strategy = setStrategy( $people );
//显示广告和类别--因为使用了策略模式,当我们需要新增加一个策略的时候这里就不需要修改了。
$strategy ->index();
版权声明
所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除
itfan123

