策略模式

<?php

abstract class CashSuper{
	abstract public function acceptCash($money);
}

class CashNormal extends CashSuper{

	public function acceptCash($money){
		return $money;
	}
}

class CashRebate extends CashSuper{

	public $moneyRebate = null;
	public function __construct($moneyRebate){
		$this->moneyRebate = $moneyRebate/10;
	}

	public function acceptCash($money){
		return $money*$this->moneyRebate;
	}
}

class CashReturn extends CashSuper{
	private $moneyCondition;
	private $moneyReturn;

	public function __construct($moneyCondition,$moneyReturn){
		$this->moneyCondition = $moneyCondition;
		$this->moneyReturn = $moneyReturn;
	}
	
	public function acceptCash($money){
		$result = $money;
		if($money>=$this->moneyCondition){
			$result = $money - floor($money/$this->moneyCondition)*$this->moneyReturn;
		}
		return $result;
	}
}

class CashContext{

	public $cs = null;
	public function __construct($type){
		switch($type){
			case "正常收费":
				$cs0 = new CashNormal();
				$this->cs = $cs0;
				break;
			case "满300-100":
				$cr1 = new CashReturn("300","100");
				$this->cs = $cr1;
				break;
			case "打8折":
				$cr2 = new CashRebate("8");
				$this->cs = $cr2;
				break;
		}
	}

	public function getResult($money){
		return $this->cs->acceptCash($money);
	}

}


$a = new CashContext("正常收费");

echo $a->getResult(700);

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值