PHP 策略模式


策略模式:定義了算法族,分別封裝起來,讓它們之間可以互相替換,此模式讓算法的變化獨立於使用算法的客戶。
 
封裝:  把行爲用接口封裝起來,我們可以把那些經常變化的部分,從當前的類中單獨取出來,用接口進行單獨的封裝。
互相替換:我們封裝好了接口,通過指定不同的接口實現類進行算法的變化,以適應某些特定的上下文環境。

 
<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2017/8/23
 * Time: 16:22
 */

  interface Shoes
  {

      public function ShoesList();
  }

  class Man implements Shoes
  {

      public function ShoesList()
      {
          echo "man list";
      }
  }

 class  Woman implements Shoes
 {

    public function ShoesList()
    {
        echo "woman list";
    }
 }

 class UserStrategy
 {

     public $strategy;

     public function __construct(Shoes $shoes)
     {
         $this->strategy = $shoes;
     }

     public function ShoesList()
     {
         $this->strategy->ShoesList();
     }
 }

    $sex = 1;

    switch ($sex)
    {
        case 1:

            (new UserStrategy(new Man()))->ShoesList();
            break;
        case 2:

            (new UserStrategy(new Woman()))->ShoesList();
            break;
    }


結果:

D:\myapache\www\demo\guancazhe>php Strategy.php
man list

使用策略模式,使得我們的程序可以根據不同的參數,調取不同的結果。


發佈了136 篇原創文章 · 獲贊 69 · 訪問量 31萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章