php设计模式——策略模式
2015-01-15 12:55
633 查看
/** * 商场活动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);
策略模式是用来封装各种算法的,在实践中可以用策略模式来封装各种业务的规则,减少了各种算法类和使用算法类的耦合
相关文章推荐
- PHP设计模式实例之(观察者模式、策略模式、简单工厂模式)
- 【PHP设计模式】策略模式
- PHP设计模式(5)策略模式
- PHP草根论之设计模式-策略模式
- PHP设计模式之:策略模式
- 学习php设计模式 php实现策略模式(strategy)
- PHP设计模式——策略模式
- php 设计模式-策略模式
- PHP设计模式9-策略模式
- PHP设计模式--策略模式
- php设计模式 Strategy(策略模式)
- 设计模式php实例:策略模式
- PHP设计模式之策略模式
- PHP设计模式之策略模式
- PHP设计模式实例之(观察者模式、策略模式、简单工厂模式)
- php设计模式 Strategy(策略模式)
- Php设计模式之【策略模式Strategy Pattern】
- PHP设计模式系列 - 策略模式
- PHP设计模式之策略模式
- PHP设计模式-策略模式