php设计模式——策略模式
来源:互联网 发布:淘宝2016创业成功案例 编辑:程序博客网 时间:2024/06/06 12:59
/** * 商场活动1,打折优惠收费方式,策略1 */class CashRebate{public $rebate;//打折额度<=1,正常收费情况下等于1 public function setActive($moneyRebate){$this->rebate = $moneyRebate;}//具体实现收取现金方法public function acceptCash($money){return $money * $this->rebate;}}/** * 商场活动2,返现金收费方式,策略2 */class CashReturn{public $moneyCondition;public $moneyReturn;public function setActive($moneyCondition, $moneyReturn){$this->moneyCondition = $moneyCondition;$this->moneyReturn = $moneyReturn;}//实现收费现金方法public function acceptCash($money){if($money >= $this->moneyCondition){return $money - $this->moneyReturn;}else{return $money;}}}/** * 简单工厂模式和策略模式相结合 */class cashContext{public $obj;//工厂模式,生成对应的处理策略对象public function __construct($type){switch ($type) {case 'rebate':$this->obj = new CashRebate();break;case 'return':$this->obj = new CashReturn();break;}}//为各种情况的对象,设置参数public function setRebate($rebate){$this->obj->setActive($rebate);}public function setReturn($ondition, $return){$this->obj->setActive($ondition, $return);}//最终获取实收用户现金的方法public function acceptMoney($money){return $this->obj->acceptCash($money);}}//活动1使用:$totalMoney = 1000; //商品总金额$rebate = 0.8; //活动折扣$cashObj = new cashContext('rebate');$cashObj->setRebate($rebate);$cashObj->acceptMoney($totalMoney);
策略模式是用来封装各种算法的,在实践中可以用策略模式来封装各种业务的规则,减少了各种算法类和使用算法类的耦合
0 0
- PHP设计模式——策略模式
- php设计模式——策略模式
- PHP设计模式——策略模式
- PHP设计模式——策略模式
- 设计模式—策略模式
- 设计模式—策略模式
- 设计模式—策略模式
- 设计模式—策略模式
- 设计模式—策略模式
- 设计模式—策略模式
- 设计模式—策略模式
- 设计模式—策略模式
- 设计模式—策略模式
- 设计模式—策略模式
- 设计模式—策略模式
- 设计模式—策略模式
- PHP设计模式之——策略模式
- 【PHP设计模式】策略模式
- Json解析后添加到ListView控件上
- Oracle RAC 环境下的连接管理
- java文件读写(输入输出流)
- 一些网站搜索引擎优化的常识
- ehcache memcache redis 三大缓存男高音
- php设计模式——策略模式
- C罗,一个关于坚持的故事
- MFC CToolBar使用总结
- hadoop 测试环境搭建
- 深入理解HashMap(及hash函数的真正巧妙之处)
- Android学习(8)-自定义组件
- 模取幂
- java.util.concurrent.locks与synchronized及其异同
- javascript性能优化小知识