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();
版权声明
所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除