国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > PHP > 正文

PHP設計模式之策略模式

2020-03-22 17:52:59
字體:
來源:轉載
供稿:網友
  • 1.概念

    策略模式:將一組特定的行為和算法封裝成類,以適應某些特定的上下文環境,這種模式就是策略模式

    2.功能

    使用策略模式實現Ioc, 依賴倒置, 控制反轉

    3.舉例

    假如一個電商網站系統,針對不同的人群要跳轉到不同的商品類目,并且所有廣告位展示不同的廣告

    4.要解決的問題

    1.不會因為上下文的改變而改變代碼(傳統都是使用 if else 來判斷)
    2.如果新增加一種類型的用戶,只需要增加一種策略就好了,不需要在代碼中 if else 里面在繼續添加邏輯
    3.不同的地方只需要執行不同的策略就好了,這樣即可解決問題
    4.從硬編碼到解耦的使用
    5.最主要的是解決了程序中的分支邏輯

    5.實戰代碼展示

    5.1 聲明策略的接口文件
    interface UserStrategy {    function showAd();    function showCategory();} 

    5.2定義女性用戶的策略
    html' target='_blank'>class FemaleUserStrategy implements UserStrategy  {    function showAd()    {        echo '2014新款女裝';    }    function showCategory()    {        echo '服裝';    }} 

    5.3定義男性用戶的策略
    class MaleUserStrategy implements UserStrategy  {    function showAd()    {        echo 'IPhone6';    }    function showCategory()    {        echo '電子產品';    }} 

    6. 頁面展示與使用
    class Page{    //保存策略對象    protected $strategy;    //首頁信息輸出    function index(){        //傳統寫法,與輸出        if (isset($_GET['famale'])) {            echo '女性';        }else if (isset($_GET['famale'])) {            echo '男性';        }        //如果新增了業務邏輯后面會很多的  if  else        //策略模式的輸出        echo $this->strategy->showAd();        echo '<br>';        echo $this->strategy->showCategory();    }    //策略模式來解決,注冊策略    function setStrategy(UserStrategy $strategy){        $this->strategy = $strategy;    }}//執行$page = new Page;//這里根據實際上下文的環境if (isset($_GET['famale'])) {    $strategy = new FemaleUserStrategy();}else if (isset($_GET['famale'])) {    $strategy = new MaleUserStrategy();}//使依賴關系反轉,最終執行在使用關系綁定,輸出結果(解決了傳統寫法的耦合問題)$page->setStrategy($strategy);$page->index();

    PHP編程

    鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

  • 發表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發表
    主站蜘蛛池模板: 海盐县| 永顺县| 绥阳县| 慈溪市| 甘泉县| 高青县| 石棉县| 绥阳县| 东安县| 星座| 神农架林区| 吉林省| 日喀则市| 江山市| 林甸县| 临洮县| 始兴县| 仪征市| 胶州市| 即墨市| 天镇县| 新绛县| 上栗县| 大宁县| 天等县| 高尔夫| 沙洋县| 闵行区| 玉龙| 沿河| 肃北| 友谊县| 华蓥市| 阜宁县| 巴林左旗| 合江县| 靖州| 进贤县| 巧家县| 宜春市| 武宣县|