注册 登录  
 加关注

网易博客网站关停、迁移的公告:

将从2018年11月30日00:00起正式停止网易博客运营
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

php开发lnmp

《西安--木木》-经历丰富了生活。 架构师QQ群: 246695517

 
 
 

日志

 
 

策略模式Strategy  

2018-03-12 15:04:47|  分类: 设计模式--php |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |


<?php
/**
* 策略模式Strategy(对象行为型)
*/

// 抽象策略类
interface OrderStrategy
{

/**
* 计算订单实付金额
* @param $total_price
* @return mixed
*/
public function actualPay($total_price);

}

//  初级会员折扣 具体策略类
class PrimaryMemberStrategy implements OrderStrategy
{
public function actualPay($total_price)
{
echo '对于初级会员的没有折扣:0', '支付价格:',$total_price,'<br/>';
}
}

// 中级会员折扣
class IntermediateMemberStrategy implements OrderStrategy
{
public function actualPay($total_price)
{
echo '对于中级会员的折扣为:10%','支付价格:',$total_price-($total_price*0.1),'<br/>';
}
}
// 高级会员折扣
class AdvancedMemberStrategy implements OrderStrategy
{
public function actualPay($total_price)
{
echo '对于高级会员的折扣为:20%','支付价格:', $total_price-($total_price*0.2),'<br/>';
}
}


//环境角色类
class Order{
private $price_strategy = null;

public function __construct($price_strategy)
{
$this->price_strategy = $price_strategy;
}


/**
* 计算实付价格
*/
public function actualPay($total_price){
$this->price_strategy->actualPay($total_price);
}

/**
* 实际支付策略
*/
public function setActualPayStrategy($travel){
$this->price_strategy = $travel;
}
}


//客户端
//中级会员计算策略
$strategy1 = new IntermediateMemberStrategy();
$order = new Order($strategy1);
$order->actualPay(100);

//高级会员计算策略
$strategy2 = new AdvancedMemberStrategy();
$order->setActualPayStrategy($strategy2);
$order->actualPay(100);


  评论这张
 
阅读(38)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018