概念
在不同的情况下使用不同的算法进行计算
代码示例
<?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');
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。