概念

在不同的情况下使用不同的算法进行计算

代码示例

<?php
/**
 * 工资接口
 */
interface Pay
{
    //工资结算方式
    public function compute();
}
/**
 * 水果销售员
 */
class Sale implements Pay
{
    public function compute()
    {
        echo '基本工资+提成' . '<br>';
    }
}
/**
 * 水果运输员
 */
class Transport implements Pay
{
    public function compute()
    {
        echo '基本工资+运输费' . '<br>';
    }
}
/**
 * 水果摊店长
 */
class Shopowner implements Pay
{
    public function compute()
    {
        echo '基本工资+提成+管理费' . '<br>';
    }
}
/**
 * 策略模式
 */
class ComputeStrategy
{
    protected $staff;    //要计算的员工类型
    public function getPay($staff)
    {
         switch($staff){
            case 'Sale':
                $staff = new Sale();
                break;
            case "Transport":
                $staff = new Transport();
                break;
            case "Shopowner":
                $staff = new Shopowner();
                break;
            default:
                   return false;
        }
        return $staff->compute();
    }
}

$compute = new ComputeStrategy();
//计算销售人员工资
$compute->getPay('Sale');
//计算运输员工资
$compute->getPay('Transport');
//计算店长工资
$compute->getPay('Shopowner');

如若时光萧瑟去丶
111 声望9 粉丝

weakChickenPeng.