您的位置:首页 > 编程语言 > PHP开发

php 设计模式(策略模式)

2017-06-29 02:24 567 查看
/**
* 策略模式是将一组特定的行为和算法封装成类,以适应某些特定的上下文环境,这就是策略模式
*/
/**
* 电商类网站,针对男生和女生要跳到不同的商品类目,并且所有广告位展示不同的广告
* 代码中会出现if男生 if女生...硬编码 当需求改变时所有代码都需要改变,这种情况就需要使用 策略模式因为策略模式
* 跟上下文的环境是中立的没有依赖,实现解耦,策略模式可以实现IOC,依赖倒置控制反转
*/
interface UserStrategy{
public function showAD();
public function showCategory();
}
//添加男性策略
class UserMan implements UserStrategy{
public function showAD(){
echo '男士新装';
}
public function showCategory(){
echo '男士目录';
}
}
//添加女士策略
class UserWman implements UserStrategy{
public function showAD(){
echo '女士新装';
}
public function showCategory(){
echo '女士目录';
}
}
//使用
class Page{
protected $strategy;
public function show(){
$this->strategy->showAD();
$this->strategy->showCategory();
}

public function getCategory(UserStrategy $strategy){
$this->strategy = $strategy;
}
}

$page = new Page();

if(isset($_GET['nvsheng'])){
$strategy = new UserWman();
} else {
$strategy = new UserMan();
}
//当需求改变时只需要添加一个策略,在获得策略实例之前 创建新策略的实例即可(实现了解耦)
$page->getCategory($strategy);
$page->show();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: