av手机免费在线观看,国产女人在线视频,国产xxxx免费,捆绑调教一二三区,97影院最新理论片,色之久久综合,国产精品日韩欧美一区二区三区

php語言

PHP策略模式定義與用法

時間:2025-02-23 03:15:23 php語言 我要投稿
  • 相關推薦

PHP策略模式定義與用法

  策略模式屬于對象的行為模式。其用意是針對一組算法,將每個算法封裝到具有共同接口的獨立的類中,從而使得它們可以相互替換。下面是小編分享的PHP策略模式定義與用法,一起來看一下吧。

 

  策略模式中主要角色

  這個模式設計到三個角色:

  環(huán)境角色(Context):持有一個Strategy的引用

  抽象策略(Strategy)角色:這是一個抽象角色,通常由一個接口或抽象類實現(xiàn)。此角色給出所有的具體的策略類所需的接口

  具體策略(ConcreateStrategy)角色:包裝了相關的算法或行為

  使用場景

  假設現(xiàn)在要設計一個購物車系統(tǒng),一個最簡單的情況就是把所有貨品的單價乘上數(shù)量,但是實際情況肯定比這個復雜。例如:對普通會員無折扣,對中級會員提供8折優(yōu)惠,對高級會員提供7折優(yōu)惠。

  根據(jù)上述描述,貨品價格是根據(jù)以下幾個算法中的一個進行的:

  對普通會員無折扣

  對中級會員8折

  對高級會員7折

  UML圖


  實現(xiàn)代碼:

  <?php

  /**

  * 策略抽象類

  * @author wzy

  *

  */

  interface Strategy

  {

  public function calPrice ($price);

  }

  /**

  * 普通會員策略類

  *

  * @author wzy

  *

  */

  class PrimaryStrategy implements Strategy

  {

  public function calPrice ($price)

  {

  echo "普通會員無折扣";

  return $price;

  }

  }

  /**

  * 中級會員策略類

  *

  * @author wzy

  *

  */

  class MiddleStrategy implements Strategy

  {

  public function calPrice ($price)

  {

  echo "中級會員8折優(yōu)惠";

  return $price * 0.8;

  }

  }

  /**

  * 高級會員策略類

  *

  * @author wzy

  *

  */

  class HighStrategy implements Strategy

  {

  public function calPrice ($price)

  {

  echo "高級會員7折優(yōu)惠";

  return $price * 0.7;

  }

  }

  /**

  * Context實現(xiàn)類

  *

  * @author wzy

  *

  */

  class Price

  {

  /**

  * 具體的策略類對象

  *

  * @var object

  */

  private $strategyInstance;

  /**

  * 構造函數(shù),傳入一個具體的策略對象

  *

  * @param object $instance

  */

  public function __construct ($instance)

  {

  $this->strategyInstance = $instance;

  }

  /**

  * 計算貨品的價格

  *

  * @param double $price

  */

  public function quote ($price)

  {

  return $this->strategyInstance->calPrice($price);

  }

  }

  /**

  * 客戶端操作

  */

  $high = new HighStrategy();

  $priceClass = new Price($high);

  $price = $priceClass->quote(400);

  echo $price;

  ?>

  回顧策略模式

  策略模式的重心不是如何實現(xiàn)算法,而是如何組織、調(diào)用這些算法,從而讓程序結(jié)構更靈活,具有更好的擴展性和維護性

  算法的平等性

  策略模式一個很大的特點就是各個策略算法的平等性。對于一系列具體的策略算法,大家的地位是一樣的,這樣才能實現(xiàn)算法之間的互相轉(zhuǎn)換

  運行時策略的唯一性

  運行期間,策略模式在每一個時刻只能使用一個具體的策略實現(xiàn)對象,雖然可以動態(tài)地在不同的策略實現(xiàn)中切換,但是同時只有一個。


【PHP策略模式定義與用法】相關文章:

php自定義錯誤處理用法實例09-05

php變量定義方法08-12

PHP內(nèi)部函數(shù)的定義07-04

php學習之php預定義變量07-29

php中數(shù)組的定義方法08-12

php用法有哪些06-16

PHP里OR的用法舉例08-29

PHP函數(shù)的區(qū)別及用法10-27

PHP引用(符號)的用法10-21