php策略体系

原创
小哥 3年前 (2022-11-17) 阅读数 42 #大杂烩

例如:一个电商首页,可以根据登陆用户的性别不同显示不同的内容,比如广告和商品类别。

传统方法: 在程序内部使用多个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();

版权声明

所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除

热门