中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

php中策略模式的原理是什么

發布時間:2021-06-08 15:55:44 來源:億速云 閱讀:125 作者:Leah 欄目:開發技術

這篇文章給大家介紹php中策略模式的原理是什么,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

策略模式 簡單理解就是 有n個做法供你選擇,根據你的需要選擇某個策略得到結果

就應用場景來說:

例1:比如購買商品需要支付,你可以提供 微信支付、支付寶支付、支付通支付。。。。(不同的支付方式就是不同的策略)

例2:購物車對產品的計價,如非vip 按原價計算 、vip按8折計算、有推廣積分的可以用100積分抵20塊。。。(不同的客戶條件計價算法有所不同,只是這里的策略選擇是根據登錄顧客資料來變動的,當然也可以用觀察者模式)

例3:計算器,計算兩個值得結果,你可以用加法、減法、乘法、除法。。。(不同的算法就是不同的策略)

從應用我們就能進一步思考如何去用代碼架構去實現這個過程!

分析:

1.首先策略模式肯定有很多種策略,而不同的策略都是一個擁有自己算法的對象,所以可以用一個接口或抽象類來框定 策略角色(雖然策略角色的共同點就都有一個算法)

2.各種策略都定好了,需要有一個類來實現將你選擇的策略拿過來使用,官方的說法就是環境角色,不去理解他字面的意思,簡單認為就是 拿某一個策略來使用

接下來看一個百度到的簡單實例,抄用原因是簡單易懂,能立即理解(網址:https://www.jb51.net/article/170770.htm)

//實現一個簡單的計算器 (策略接口類)
interface MathOp{
  public function calculation($num1,$num2);
}
//加法 (策略一 策略具體實現,繼承策略接口)
class MathAdd implements MathOp{
  public function calculation($num1,$num2){
    return $num1 + $num2;
  }
}
//減法 (策略二 策略具體實現,繼承策略接口)
class MathSub implements MathOp{
  public function calculation($num1,$num2){
    return $num1 - $num2;
  }
}
//乘法 (策略三 策略具體實現,繼承策略接口)
class MathMulti implements MathOp{
  public function calculation($num1,$num2){
    return $num1 * $num2;
  }
}
//除法 (策略四 策略具體實現,繼承策略接口)
class MathDiv implements MathOp{
  public function calculation($num1,$num2){
    return $num1 / $num2;
  }
}
//環境角色  (調取某個策略就行計算,調用得看客戶端按哪個鍵)
class Op{
  protected $op_class = null;
  public function __construct($op_type){
    $this->op_class = 'Math' . $op_type;
  }
  public function get_result($num1,$num2){
    $cls = new $this->op_class;
    return $cls->calculation($num1,$num2);
  }
}
//具體應用過程
$obj = new Op('Add');
echo $obj->get_result(6,2);  //8
echo "<br/>";
$obj = new Op('Sub');
echo $obj->get_result(6,5);  //1
echo "<br/>";
$obj = new Op('Multi');
echo $obj->get_result(6,2);  //12
echo "<br/>";
$obj = new Op('Div');
echo $obj->get_result(6,2);  //3

運行結果:

8
1
12
3

關于php中策略模式的原理是什么就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

php
AI

四会市| 乐陵市| 塔城市| 明溪县| 绥德县| 罗平县| 西充县| 扶沟县| 巴东县| 睢宁县| 玉田县| 云阳县| 洪湖市| 平乡县| 璧山县| 达尔| 合肥市| 张掖市| 德化县| 伊通| 故城县| 金湖县| 勐海县| 石景山区| 乐平市| 祁阳县| 常宁市| 浠水县| 宁夏| 林州市| 工布江达县| 蓬溪县| 荃湾区| 色达县| 大埔县| 东山县| 宿松县| 漾濞| 五莲县| 富裕县| 城固县|