<?php
//运算符抽象类
abstract class Operation{
private $num1=0;
private $num2=0;
public function __get($name){
if(isset($this->$name)){
return $this->$name;
}
return null;
}
public function __set($name,$value){
$this->$name=$value;
}
abstract function getResult();
}
//加法
class Add extends Operation{
public function getResult(){
return $this->num1+$this->num2;
}
}
//减法
class Sub extends Operation{
public function getResult(){
return $this->num1-$this->num2;
}
}
//乘法
class Mul extends Operation{
public function getResult(){
return $thi->num1*$this->num2;
}
}
//除法
class Div extends Operation{
public function getResult(){
if($this->num2==0){
echo "除数不能为零";
return false;
}
return $this->num1/$this->num2;
}
}
//运算符操作工厂,来决定初始化哪个类
class OperationFactory{
static function createOperation($operate){
switch($operate){
case "+":
$oper=new Add();
break;
case "-":
$oper=new Sub();
break;
case "*":
$oper=new Mul();
break;
case "/":
$oper=new Div();
}
return $oper;
}
}
//开始测试
$oper=OperationFactory::createOperation("+");
$oper->num1=3;
$oper->num2=6;
$result=$oper->getResult();
echo $result;
?>
工厂模式
最新推荐文章于 2024-04-13 16:38:06 发布