需求:对于不同的用户展示不同的内容
定义接口
interface UserStrategy{
function showAd();//展示广告
function showCategory();//展示分类
}
普通用户展示的内容
class CommonUser implements UserStrategy{
public function showAd()
{
// TODO: Implement showAd() method.
//展示普通用户广告
}
public function showCategory()
{
// TODO: Implement showCategory() method.
//展示普通用户商品分类
}
}
vip用户展示的内容
class VipUser implements UserStrategy{
public function showAd()
{
// TODO: Implement showAd() method.
//展示会员广告
}
public function showCategory()
{
// TODO: Implement showCategory() method.
//展示会员商品分类
}
}
设置用户对象,展示用户页面
class UserPage{
protected $user_object;//用户对象,vip用户或普通用户
/*
* 设置用户对象
* */
function strategy(UserStrategy $strategy){
$this->user_object = $strategy;
}
function index(){
$ad = $this->user_object->showAd();//获取广告
$category = $this->user_object->showAd();//获取商品分类
}
}
根据不同用户,展示不同界面
if($is_vip == true){
$strategy = new \VipUser();
}else{
$strategy = new \CommonUser();
}
$user_page = new UserPage();
$user_page->strategy($strategy)->index();