php 设计模式(策略模式)

来源:互联网 发布:汽车内饰件图解知乎 编辑:程序博客网 时间:2024/05/22 01:40
/** * 策略模式是将一组特定的行为和算法封装成类,以适应某些特定的上下文环境,这就是策略模式 *//** * 电商类网站,针对男生和女生要跳到不同的商品类目,并且所有广告位展示不同的广告 * 代码中会出现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();