您好,登錄后才能下訂單哦!
步驟1.定義策略接口
#UserStrategy.php 用戶策略 <?php namespace celvmoshi; /**用戶策略接口 * Interface UserStategy * @package celvmoshi */ interface UserStrategy { //顯示廣告 public function showAd(); //顯示分類 public function showCategory(); }
步驟2.實現策略業務
#FemaleStrategy.php 女性用戶策略 <?php namespace celvmoshi; /**女性用戶策略 * Class FemaleStrayegy * @package celvmoshi */ class FemaleStrategy implements UserStrategy { public function showAd() { echo "2017 新潮女裝\r\n"; } public function showCategory() { echo "服裝\r\n"; } }
繼續添加策略
#MaleStrategy.php 男性用戶策略 <?php namespace celvmoshi; /**男性用戶策略 * Class MaleStrayegy * @package celvmoshi */ class MaleStrategy implements UserStrategy { //顯示廣告 public function showAd() { echo "新款寶馬X6\r\n"; } //顯示分類 public function showCategory() { echo "小汽車\r\n"; } }
步驟3.在實際業務場景中運用策略
本實例的業務場景為:根據男女、性用戶自動區分廣告及分類
#index.php 默認業務訪問入口 <?php define('ROOT', __DIR__ . '/'); //實現自動加載 spl_autoload_register('autoload'); function autoload($className) { $arr = explode('\\', $className); require_once ROOT . ucfirst($arr[1]) . '.php'; } class Page { protected $strategy;//顯示策略 public function index() { echo "顯示廣告:"; $this->strategy->showAd(); echo "<hr>"; echo "顯示分類:"; $this->strategy->showCategory(); } //設置顯示策略 public function setStrategy(celvmoshi\UserStrategy $strategy)//(約定接口類型) { $this->strategy = $strategy; } } $page = new Page(); if (isset($_GET['female'])) { $userStrategy = new celvmoshi\FemaleStrategy(); } else if (isset($_GET['male'])) { $userStrategy = new celvmoshi\MaleStrategy(); } else { return; } $page->setStrategy($userStrategy); $page->index();
至此已大功告成!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。