封装加减乘除类,要求:能够遵守开闭原则进行扩展以及单一职责原则,每个类目对外的方法属性越少越好。
/**
* 定义接口
* 作为开闭原则,可扩展
*/
interface Calculation
{
public function calc($a,$b);
}
/**
* 加法
*/
class Add implements Calculation
{
public function calc($a,$b)
{
return $a + $b;
}
}
/**
* 减法
*/
class Reduce implements Calculation
{
public function calc($a,$b)
{
return $a - $b;
}
}
/**
* 乘法
*/
class Ride implements Calculation
{
public function calc($a,$b)
{
return $a * $b;
}
}
/**
* 除法
*/
class Except implements Calculation
{
public function calc($a,$b)
{
//0不能作为被除数
if($b == 0){
return '计算错误,0不能作为被除数喔!';
}
return $a / $b;
}
}
$Add = new Add();
$Reduce = new Reduce();
$Ride = new Ride();
$Except = new Except();
echo $Add->calc(2,4).'<br>';
echo $Reduce->calc(8,1).'<br>';
echo $Ride->calc(2,9).'<br>';
echo $Except->calc(10,4).'<br>';