## 策略模式 * 1、策略模式,将一组特定的行为和算法封装成类,以适应某些特定的上下文环境,这种模式就是策略模式 * 2、实际应用举例,假如一个电商网站系统,针对男性女性用户要各自跳转到不同的商品类目,并且所有广告位展示不同的广告 > 策略接口层 `UserStrategy.php` ``` interface UserStrategy { // 显示广告 public function showAd(); // 显示分类 public function showCategory(); } ``` > 女性具体类 `FemaleUserStrategy.php` ``` class FemaleUserStrategy implements UserStrategy { public function showAd() { echo "2014款女装广告"; } public function showCategory() { echo '女装'; } } ``` > 男性具体类 `MaleUserStrategy.php` ``` class MaleUserStrategy implements UserStrategy { public function showAd() { echo "IPhone 8 Plus"; } public function showCategory() { echo "电子商品"; } } ``` > 广告分类-显示`ShowPage.php` ``` class ShowPage { // 用户接口类 protected $userStrategy; /** * 设置策略接口 * @param UserStrategy $userStrategy */ public function setStrategy(UserStrategy $userStrategy) { $this->userStrategy = $userStrategy; } // 展示页面 public function show() { echo "AD:"; $this->userStrategy->showAd(); echo "<br/>"; echo "Category:"; $this->userStrategy->showCategory(); } } ``` > 打印结果 ``` AD:2014款女装广告 Category:女装 AD:IPhone 8 Plus Category:电子商品 ```