<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                ## 7-1 策略模式的實現和使用 ### 第一步:創建策略的接口文件 文件約定了策略擁有哪些行為。 *D:\wamp\www\demo\oop\framework\Think\UserStrategy.php* ~~~ <?php namespace Think; // 定義一個用戶的策略接口 interface UserStrategy { function showAd(); function showCategory(); } ~~~ ### 第二步:策略實現 接口定義完畢,我們就應該定義具體的策略實現。 分別定義了 女性用戶的策略,男性用戶的策略 *D:\wamp\www\demo\oop\framework\Think\FemaleUserStrategy.php* ~~~ <?php namespace Think; class FemaleUserStrategy implements UserStrategy { function showAd() { echo "2017新款女裝"; } function showCategory() { echo "女裝目錄"; } } ~~~ *D:\wamp\www\demo\oop\framework\Think\MaleUserStrategy.php* ~~~ <?php namespace Think; class MaleUserStrategy implements UserStrategy { function showAd() { echo "電子產品"; } function showCategory() { echo "3C配件目錄"; } } ~~~ ### 第三步:使用策略前 *D:\wamp\www\demo\oop\framework\index.php* 傳統的方法需要寫這些條件分支語句,才能實現需求,但是不足之處在于一旦需要增加條件,那么所有使用到這些分支的地方都需要修改。 ~~~ <?php // 入口文件 define('BASEDIR', __DIR__); include BASEDIR . '/Think/Loder.php'; spl_autoload_register('\\Think\\Loder::autoload'); class Page { function index() { // 首頁顯示 if ($_GET['m'] == "female") { # code... } elseif ($_GET['m'] == "male") { # code... } else { // } } } $page = new Page(); $page->index(); ~~~ ### 第四步:使用策略模式 *D:\wamp\www\demo\oop\framework\index.php* ~~~ // 設置策略的方法 function setStrategy(Think\UserStrategy $strategy) { $this->strategy = $strategy; } ~~~ 給 `Page` 類添加一個 設置策略的 方法,該方法 約定了接口的類型 為:UserStrategy。 然后,我們就可以根據條件 來實例化策略,并把對象傳遞給 Page類 ~~~ // 根據條件實例化對應的策略 if (isset($_GET['m']) && $_GET['m'] == 'female') { $strategy = new Think\FemaleUserStrategy(); } else { $strategy = new Think\MaleUserStrategy(); } // 把策略的對象,傳遞到頁面的對象中 $page->setStrategy($strategy); ~~~ 最后,在Page類的 index() 方法里,不使用任何的分支結構,直接調用策略對象中的實現方法即可! ~~~ function index() { // 這里不需要使用分支結構,直接調用策略的對象的實現方法 $this->strategy->showAd(); $this->strategy->showCategory(); } ~~~ *D:\wamp\www\demo\oop\framework\index.php* ~~~ <?php // 入口文件 define('BASEDIR', __DIR__); include BASEDIR . '/Think/Loder.php'; spl_autoload_register('\\Think\\Loder::autoload'); class Page { protected $strategy; function index() { // 這里不需要使用分支結構,直接調用策略的對象的實現方法 $this->strategy->showAd(); $this->strategy->showCategory(); } // 設置策略的方法 function setStrategy(Think\UserStrategy $strategy) { $this->strategy = $strategy; } } $page = new Page(); // 根據條件實例化對應的策略 if (isset($_GET['m']) && $_GET['m'] == 'female') { $strategy = new Think\FemaleUserStrategy(); } else { $strategy = new Think\MaleUserStrategy(); } // 把策略的對象,傳遞到頁面的對象中 $page->setStrategy($strategy); $page->index(); ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看