「PHP」策略模式
引言 所屬:行為型模式,常用設計模式之一 學習資料:
- 《大話設計模式》程杰
?
程序設計代碼: 1. 抽象活動算法類 <?php /*** 抽象活動算法類*/ namespace strategy;abstract class StrategyAbstract {/*** 具體活動算法方法* @return mixed*/public abstract function doAction($money); }?
2. 具體算法產品類
<?php /*** 滿減算法產品類*/ namespace strategy;class ManJianStrategy extends StrategyAbstract {public function doAction($money){echo '滿減算法:原價'. $money .'元';} } <?php /*** 打折算法產品類*/ namespace strategy;class DaZheStrategy extends StrategyAbstract {/*** 具體算法實現* @param $money* @return mixed|void*/public function doAction($money){echo '打折算法:原價'. $money .'元';} }?
3. 策略工廠類
<?php /*** 策略工廠類*/ namespace strategy;class StrategyFind {private $strategy_mode;/*** 初始時,傳入具體的策略對象* @param $mode*/public function __construct($mode){$this->strategy_mode = $mode;}/*** 執行打折算法* @param $money*/public function get($money){$this->strategy_mode->doAction($money);} }?
入口文件
<?phpnamespace strategy;include '../autoload.php'; // 滿減折算 $mode1 = new StrategyFind(new ManJianStrategy()); $mode1->get(100);echo '<br>';// 滿減活動 $mode2= new StrategyFind(new DaZheStrategy()); $mode2->get(100);?
以下為源碼地址
GitHub源碼地址:https://github.com/xiaobaoword/design_pattern/tree/master
?
總結? ? ?
策略模式就是使用封裝一個公共抽象算法,每個算法(比如,打折算法,滿減算法)實現這個接口,然后搞個策略工廠類來調用這些算法。
?
轉載于:https://www.cnblogs.com/houdabao/p/9546871.html
總結
- 上一篇: 制作npm插件vue-toast-m实例
- 下一篇: vue踩坑- 报错npm ERR! cb