PHP設計模式之策略模式____PHP

來源:互聯網
上載者:User
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定義女性使用者的策略
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['male'])) {    $strategy = new MaleUserStrategy();}//使依賴關係反轉,最終執行在使用關係綁定,輸出結果(解決了傳統寫法的耦合問題)$page->setStrategy($strategy);$page->index();

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.