PHP设计模式--策略模式

  策略模式(Strategy) 是一种行为型模式。
 百度定义:策略模式是指对一系列的算法定义,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。

 理解起来并不是很难,策略模式是一种算法的灵活实现,通俗点讲,就是一个功能有多条途径去实现,
 拥有一个抽象策略类,具体策略的灵活性就体现在,出现新的算法策略时只需要添加一个具体算法策略就行。
 举个简单的例子,我们都吃过外卖,外卖的店家会有很多营销策略去促使消费,比如满30减10,满60减30。

 代码如下:

<?php  
  
header("Content-Type:text/html;charset=utf-8");  
  
require_once "Strategy.php";  
  
// 创建策略对象  
$obj = new Strategy();  
  
// 满足60元  
$obj->GetPrice("RMB60");  
$obj->ShowPrice();  
  
// 满足30元  
$obj->GetPrice("RMB30");  
$obj->ShowPrice();

<?php  
// 策略接口  
interface IStrategy   
{  
    /**   
     * 显示价格 子类必须实现   
     * @access public      
     */  
    function ShowPrice();  
}  
//满60  
Class RMB60 implements IStrategy  
{  
    /**   
     * 显示价格   
     * @access public      
     */  
    function ShowPrice(){  
       echo "满60减30,实际付款30元<br/>";  
    }  
}  
// 满30  
Class RMB30 implements IStrategy  
{  
    /**   
     * 显示价格   
     * @access public      
     */  
    function ShowPrice(){  
       echo "满20减10,实际付款20元<br/>";  
    }  
}  
//策略对象  
Class Strategy {  
    /**   
     * 获取价格值   
     * @var string   
     */  
    private $money;  
  
    /**   
     * 获取价格,创建对象   
     * @access public    
     * @param  string $money   
     */  
    function GetPrice($money)  
    {  
        // PHP一种创建对象的方法  
        $class = new ReflectionClass($money);  
        $this->item = $class->newInstance();   
    }  
  
    /**   
     * 显示价格   
     * @access public      
     */  
    function ShowPrice(){  
        $this->item->ShowPrice();  
    }  
}  

结果如下:

满60减30,实际付款30元
满20减10,实际付款20元


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值